diff --git a/.github/workflows/js_of_ocaml.yml b/.github/workflows/js_of_ocaml.yml index d123e315bc..6417e7a07c 100644 --- a/.github/workflows/js_of_ocaml.yml +++ b/.github/workflows/js_of_ocaml.yml @@ -67,6 +67,13 @@ jobs: skip-effects: false skip-test: false skip-doc: false + - os: ubuntu-latest + os-name: Ubuntu + ocaml-name: "5.5.0~alpha3" + ocaml-compiler: "ocaml-compiler.5.5.0~alpha3" + skip-effects: false + skip-test: false + skip-doc: true - os: ubuntu-latest os-name: Ubuntu ocaml-compiler: "5.1" @@ -148,6 +155,9 @@ jobs: ox: https://github.com/oxcaml/opam-repository.git#${{ env.OXCAML_OPAM_REPO_REF }} if: ${{ endsWith(matrix.ocaml-compiler, '+ox') }} + - run: opam repo add alpha git+https://github.com/kit-ty-kate/opam-alpha-repository.git + if: contains( matrix.ocaml-compiler, 'alpha3') + # Work-around a race between reinstalling mingw-w64-shims # (because of conf-pkg-config optional dep) and installing other # packages that implicitly depend on mingw-w64-shims. diff --git a/.github/workflows/wasm_of_ocaml.yml b/.github/workflows/wasm_of_ocaml.yml index 6be447a240..adf9c3593e 100644 --- a/.github/workflows/wasm_of_ocaml.yml +++ b/.github/workflows/wasm_of_ocaml.yml @@ -35,6 +35,13 @@ jobs: all_jane_street_tests: - false include: + - os: ubuntu-latest + os-name: Ubuntu + ocaml-name: "5.5.0~alpha3" + ocaml-compiler: "ocaml-compiler.5.5.0~alpha3" + separate_compilation: true + jane_street_tests: false + all_jane_street_tests: false - os: macos-latest os-name: MacOS ocaml-compiler: "5.3" @@ -129,6 +136,9 @@ jobs: - run: opam install conf-pkg-config conf-mingw-w64-gcc-i686 conf-mingw-w64-g++-x86_64 if: runner.os == 'Windows' + - run: opam repo add alpha git+https://github.com/kit-ty-kate/opam-alpha-repository.git + if: contains( matrix.ocaml-compiler, 'alpha3') + - name: Pin wasm_of_ocaml working-directory: ./wasm_of_ocaml run: opam pin . -n --with-version 6.0.1+ox diff --git a/compiler/tests-check-prim/dune.inc b/compiler/tests-check-prim/dune.inc index f8b180b71e..473f3e90ac 100644 --- a/compiler/tests-check-prim/dune.inc +++ b/compiler/tests-check-prim/dune.inc @@ -88,6 +88,51 @@ +toplevel.js %{dep:unix.bc})))) +(rule + (targets main.5.5.output) + (mode + (promote (until-clean))) + (enabled_if (and (>= %{ocaml_version} 5.5)(< %{ocaml_version} 5.6)(not %{oxcaml_supported}))) + (action + (with-stdout-to + %{targets} + (run + %{bin:js_of_ocaml} + check-runtime + +dynlink.js + +toplevel.js + %{dep:main.bc})))) + +(rule + (targets unix-Win32.5.5.output) + (mode + (promote (until-clean))) + (enabled_if (and (>= %{ocaml_version} 5.5)(< %{ocaml_version} 5.6)(= %{os_type} Win32)(not %{oxcaml_supported}))) + (action + (with-stdout-to + %{targets} + (run + %{bin:js_of_ocaml} + check-runtime + +dynlink.js + +toplevel.js + %{dep:unix.bc})))) + +(rule + (targets unix-Unix.5.5.output) + (mode + (promote (until-clean))) + (enabled_if (and (>= %{ocaml_version} 5.5)(< %{ocaml_version} 5.6)(= %{os_type} Unix)(not %{oxcaml_supported}))) + (action + (with-stdout-to + %{targets} + (run + %{bin:js_of_ocaml} + check-runtime + +dynlink.js + +toplevel.js + %{dep:unix.bc})))) + (rule (targets main.5.2+ox.output) (mode diff --git a/compiler/tests-check-prim/gen_dune.ml b/compiler/tests-check-prim/gen_dune.ml index 471d2bae1a..892889b579 100644 --- a/compiler/tests-check-prim/gen_dune.ml +++ b/compiler/tests-check-prim/gen_dune.ml @@ -103,7 +103,7 @@ let rule bc ocaml_version os_type ocaml_variant = let () = let versions : (version * variant) list = - [ `V4_14, `Mainstream; `V5_4, `Mainstream; `V5_2, `OxCaml ] + [ `V4_14, `Mainstream; `V5_4, `Mainstream; `V5_5, `Mainstream; `V5_2, `OxCaml ] in set_binary_mode_out stdout true; List.iter diff --git a/compiler/tests-check-prim/main.5.5.output b/compiler/tests-check-prim/main.5.5.output new file mode 100644 index 0000000000..ab95d898c6 --- /dev/null +++ b/compiler/tests-check-prim/main.5.5.output @@ -0,0 +1,202 @@ +Missing +------- + +From main.bc: +caml_assume_no_perform +caml_continuation_use +caml_int_as_pointer +caml_jsoo_runtime_value +caml_reset_afl_instrumentation +debugger + +Unused +------- + +From +array.js: +caml_check_bound + +From +bigarray.js: +caml_ba_create_from (deprecated) +caml_ba_init + +From +bigstring.js: +caml_bigstring_blit_ba_to_ba +caml_bigstring_blit_ba_to_bytes +caml_bigstring_blit_bytes_to_ba +caml_bigstring_blit_string_to_ba +caml_bigstring_memcmp +caml_hash_mix_bigstring + +From +effect.js: +jsoo_effect_not_supported + +From +fs.js: +caml_ba_map_file +caml_ba_map_file_bytecode +caml_fs_init +jsoo_create_file +jsoo_create_file_extern + +From +graphics.js: +caml_gr_arc_aux +caml_gr_blit_image +caml_gr_clear_graph +caml_gr_close_graph +caml_gr_close_subwindow +caml_gr_create_image +caml_gr_current_x +caml_gr_current_y +caml_gr_display_mode +caml_gr_doc_of_state +caml_gr_draw_arc +caml_gr_draw_char +caml_gr_draw_image +caml_gr_draw_rect +caml_gr_draw_str +caml_gr_draw_string +caml_gr_dump_image +caml_gr_fill_arc +caml_gr_fill_poly +caml_gr_fill_rect +caml_gr_lineto +caml_gr_make_image +caml_gr_moveto +caml_gr_open_graph +caml_gr_open_subwindow +caml_gr_plot +caml_gr_point_color +caml_gr_remember_mode +caml_gr_resize_window +caml_gr_set_color +caml_gr_set_font +caml_gr_set_line_width +caml_gr_set_text_size +caml_gr_set_window_title +caml_gr_sigio_handler +caml_gr_sigio_signal +caml_gr_size_x +caml_gr_size_y +caml_gr_state +caml_gr_state_create +caml_gr_state_get +caml_gr_state_init +caml_gr_state_set +caml_gr_synchronize +caml_gr_text_size +caml_gr_wait_event +caml_gr_window_id + +From +hash.js: +caml_hash_mix_int64 + +From +ints.js: +caml_div +caml_mod + +From +jslib.js: +caml_is_js +caml_trampoline +caml_trampoline_return +caml_wrap_exception + +From +marshal.js: +caml_marshal_constants + +From +mlBytes.js: +caml_array_of_bytes (deprecated) +caml_array_of_string (deprecated) +caml_bytes_of_utf16_jsstring +caml_new_string (deprecated) +caml_string_concat +caml_to_js_string (deprecated) + +From +runtime_events.js: +caml_runtime_events_create_cursor +caml_runtime_events_free_cursor +caml_runtime_events_read_poll +caml_runtime_events_user_resolve + +From +stdlib.js: +caml_get_global +caml_get_global_predef +caml_is_printable +caml_maybe_print_stats +caml_register_global_by_index +caml_register_global_predef +caml_set_link_info + +From +sys.js: +caml_fatal_uncaught_exception +caml_format_exception +caml_is_special_exception +caml_set_static_env +caml_sys_const_naked_pointers_checked + +From +toplevel.js: +jsoo_get_runtime_aliases +jsoo_toplevel_init_compile +jsoo_toplevel_init_reloc + +From +unix.js: +caml_strerror +caml_unix_access +caml_unix_chdir +caml_unix_chmod +caml_unix_cleanup +caml_unix_close +caml_unix_closedir +caml_unix_fchmod +caml_unix_filedescr_of_fd +caml_unix_findclose +caml_unix_findfirst +caml_unix_findnext +caml_unix_fstat +caml_unix_fstat_64 +caml_unix_fsync +caml_unix_ftruncate +caml_unix_ftruncate_64 +caml_unix_getegid +caml_unix_geteuid +caml_unix_getgid +caml_unix_getpwnam +caml_unix_gettimeofday +caml_unix_getuid +caml_unix_gmtime +caml_unix_has_symlink +caml_unix_inchannel_of_filedescr +caml_unix_inet_addr_of_string +caml_unix_isatty +caml_unix_link +caml_unix_localtime +caml_unix_lookup_file +caml_unix_lseek +caml_unix_lseek_64 +caml_unix_lstat +caml_unix_lstat_64 +caml_unix_mkdir +caml_unix_mktime +caml_unix_open +caml_unix_opendir +caml_unix_outchannel_of_filedescr +caml_unix_read +caml_unix_read_bigarray +caml_unix_readdir +caml_unix_readlink +caml_unix_rename +caml_unix_rewinddir +caml_unix_rmdir +caml_unix_single_write +caml_unix_startup +caml_unix_stat +caml_unix_stat_64 +caml_unix_symlink +caml_unix_time +caml_unix_times +caml_unix_truncate +caml_unix_truncate_64 +caml_unix_unlink +caml_unix_utimes +caml_unix_write +caml_unix_write_bigarray +unix_error_message + diff --git a/compiler/tests-check-prim/unix-Unix.5.5.output b/compiler/tests-check-prim/unix-Unix.5.5.output new file mode 100644 index 0000000000..ab7a2e1787 --- /dev/null +++ b/compiler/tests-check-prim/unix-Unix.5.5.output @@ -0,0 +1,227 @@ +Missing +------- + +From unix.bc: +caml_assume_no_perform +caml_continuation_use +caml_int_as_pointer +caml_jsoo_runtime_value +caml_reset_afl_instrumentation +caml_unix_accept +caml_unix_alarm +caml_unix_bind +caml_unix_chown +caml_unix_chroot +caml_unix_clear_close_on_exec +caml_unix_clear_nonblock +caml_unix_connect +caml_unix_dup +caml_unix_dup2 +caml_unix_environment +caml_unix_environment_unsafe +caml_unix_execv +caml_unix_execve +caml_unix_execvp +caml_unix_execvpe +caml_unix_fchown +caml_unix_fork +caml_unix_getaddrinfo +caml_unix_getgroups +caml_unix_gethostbyaddr +caml_unix_gethostbyname +caml_unix_gethostname +caml_unix_getitimer +caml_unix_getlogin +caml_unix_getnameinfo +caml_unix_getpeername +caml_unix_getpid +caml_unix_getppid +caml_unix_getprotobyname +caml_unix_getprotobynumber +caml_unix_getservbyname +caml_unix_getservbyport +caml_unix_getsockname +caml_unix_getsockopt +caml_unix_initgroups +caml_unix_kill +caml_unix_listen +caml_unix_lockf +caml_unix_map_file_bytecode +caml_unix_mkfifo +caml_unix_nice +caml_unix_pipe +caml_unix_putenv +caml_unix_realpath +caml_unix_recv +caml_unix_recvfrom +caml_unix_select +caml_unix_send +caml_unix_sendto +caml_unix_set_close_on_exec +caml_unix_set_nonblock +caml_unix_setgid +caml_unix_setgroups +caml_unix_setitimer +caml_unix_setsid +caml_unix_setsockopt +caml_unix_setuid +caml_unix_shutdown +caml_unix_sigpending +caml_unix_sigprocmask +caml_unix_sigsuspend +caml_unix_sigwait +caml_unix_sleep +caml_unix_socket +caml_unix_socketpair +caml_unix_spawn +caml_unix_string_of_inet_addr +caml_unix_tcdrain +caml_unix_tcflow +caml_unix_tcflush +caml_unix_tcgetattr +caml_unix_tcsendbreak +caml_unix_tcsetattr +caml_unix_umask +caml_unix_unsetenv +caml_unix_wait +caml_unix_waitpid +debugger + +Unused +------- + +From +array.js: +caml_check_bound + +From +bigarray.js: +caml_ba_create_from (deprecated) +caml_ba_init + +From +bigstring.js: +caml_bigstring_blit_ba_to_ba +caml_bigstring_blit_ba_to_bytes +caml_bigstring_blit_bytes_to_ba +caml_bigstring_blit_string_to_ba +caml_bigstring_memcmp +caml_hash_mix_bigstring + +From +effect.js: +jsoo_effect_not_supported + +From +fs.js: +caml_ba_map_file +caml_ba_map_file_bytecode +caml_fs_init +jsoo_create_file +jsoo_create_file_extern + +From +graphics.js: +caml_gr_arc_aux +caml_gr_blit_image +caml_gr_clear_graph +caml_gr_close_graph +caml_gr_close_subwindow +caml_gr_create_image +caml_gr_current_x +caml_gr_current_y +caml_gr_display_mode +caml_gr_doc_of_state +caml_gr_draw_arc +caml_gr_draw_char +caml_gr_draw_image +caml_gr_draw_rect +caml_gr_draw_str +caml_gr_draw_string +caml_gr_dump_image +caml_gr_fill_arc +caml_gr_fill_poly +caml_gr_fill_rect +caml_gr_lineto +caml_gr_make_image +caml_gr_moveto +caml_gr_open_graph +caml_gr_open_subwindow +caml_gr_plot +caml_gr_point_color +caml_gr_remember_mode +caml_gr_resize_window +caml_gr_set_color +caml_gr_set_font +caml_gr_set_line_width +caml_gr_set_text_size +caml_gr_set_window_title +caml_gr_sigio_handler +caml_gr_sigio_signal +caml_gr_size_x +caml_gr_size_y +caml_gr_state +caml_gr_state_create +caml_gr_state_get +caml_gr_state_init +caml_gr_state_set +caml_gr_synchronize +caml_gr_text_size +caml_gr_wait_event +caml_gr_window_id + +From +hash.js: +caml_hash_mix_int64 + +From +ints.js: +caml_div +caml_mod + +From +jslib.js: +caml_is_js +caml_trampoline +caml_trampoline_return +caml_wrap_exception + +From +marshal.js: +caml_marshal_constants + +From +mlBytes.js: +caml_array_of_bytes (deprecated) +caml_array_of_string (deprecated) +caml_bytes_of_utf16_jsstring +caml_new_string (deprecated) +caml_string_concat +caml_to_js_string (deprecated) + +From +runtime_events.js: +caml_runtime_events_create_cursor +caml_runtime_events_free_cursor +caml_runtime_events_read_poll +caml_runtime_events_user_resolve + +From +stdlib.js: +caml_get_global +caml_get_global_predef +caml_is_printable +caml_maybe_print_stats +caml_register_global_by_index +caml_register_global_predef +caml_set_link_info + +From +sys.js: +caml_fatal_uncaught_exception +caml_format_exception +caml_is_special_exception +caml_set_static_env +caml_sys_const_naked_pointers_checked + +From +toplevel.js: +jsoo_get_runtime_aliases +jsoo_toplevel_init_compile +jsoo_toplevel_init_reloc + +From +unix.js: +caml_strerror +caml_unix_cleanup +caml_unix_filedescr_of_fd +caml_unix_findclose +caml_unix_findfirst +caml_unix_findnext +caml_unix_startup +unix_error_message + diff --git a/compiler/tests-compiler/dune.inc b/compiler/tests-compiler/dune.inc index 2d8b956024..1f5089e5ec 100644 --- a/compiler/tests-compiler/dune.inc +++ b/compiler/tests-compiler/dune.inc @@ -407,7 +407,7 @@ (library ;; compiler/tests-compiler/gh1494.ml (name gh1494_15) - (enabled_if true) + (enabled_if (>= %{ocaml_version} 5.5)) (modules gh1494) (libraries js_of_ocaml_compiler unix str jsoo_compiler_expect_tests_helper) (inline_tests @@ -422,7 +422,7 @@ (library ;; compiler/tests-compiler/gh1559.ml (name gh1559_15) - (enabled_if true) + (enabled_if (>= %{ocaml_version} 5.5)) (modules gh1559) (libraries js_of_ocaml_compiler unix str jsoo_compiler_expect_tests_helper) (inline_tests diff --git a/compiler/tests-compiler/gen-rules/gen.ml b/compiler/tests-compiler/gen-rules/gen.ml index 82ddd261f9..907f14f14f 100644 --- a/compiler/tests-compiler/gen-rules/gen.ml +++ b/compiler/tests-compiler/gen-rules/gen.ml @@ -49,6 +49,7 @@ let prefix : string = type enabled_if = | GE5 | GE52 + | GE55 | LT52 | B64 | NotOxCaml @@ -58,6 +59,8 @@ type enabled_if = let lib_enabled_if = function | "obj" | "effects" -> GE5 | "gh1051" -> B64 + | "gh1494" -> GE55 + | "gh1559" -> GE55 | _ -> Any let test_enabled_if = function @@ -82,6 +85,7 @@ let enabled_if = function | Any -> "true" | GE5 -> "(>= %{ocaml_version} 5)" | GE52 -> "(>= %{ocaml_version} 5.2)" + | GE55 -> "(>= %{ocaml_version} 5.5)" | LT52 -> "(< %{ocaml_version} 5.2)" | B64 -> "%{arch_sixtyfour}" | GE5NotOxCaml -> "(and (>= %{ocaml_version} 5) (not %{oxcaml_supported}))" diff --git a/compiler/tests-compiler/gh1494.ml b/compiler/tests-compiler/gh1494.ml index 954ffd21f7..e5b67c073e 100644 --- a/compiler/tests-compiler/gh1494.ml +++ b/compiler/tests-compiler/gh1494.ml @@ -39,7 +39,7 @@ let () = [%expect {| function bug(param){ - var g = [0, function(x){return function(_b_){return _b_;};}]; + var g = [0, function(x){return Stdlib_Fun[1];}]; return [0, function(param){return caml_call1(g[1], 1);}, g]; } //end diff --git a/compiler/tests-compiler/gh1559.ml b/compiler/tests-compiler/gh1559.ml index 4678859dd8..2b7f545e56 100644 --- a/compiler/tests-compiler/gh1559.ml +++ b/compiler/tests-compiler/gh1559.ml @@ -100,14 +100,14 @@ let () = my_ref := 2 if(0 === match) return this_will_be_undefined(0); if(1 === match){ var nesting = 1; - return caml_call2(Stdlib_Int[8], nesting, 0) + return caml_call2(Stdlib_Int[12], nesting, 0) ? nesting : this_will_be_undefined(0); } t$0 = t; } } - var _a_ = handle_state([0, 1]), _a_ = caml_call1(Stdlib_Int[12], _a_); + var _a_ = handle_state([0, 1]), _a_ = caml_call1(Stdlib_Int[22], _a_); caml_call1(Stdlib[46], _a_); var my_ref = [0, 1]; my_ref[1] = 2; @@ -216,7 +216,7 @@ let () = my_ref := 2 return g(0) + _a_ | 0; } var nesting = 1; - if(caml_call2(Stdlib_Int[8], nesting, 0)) return nesting; + if(caml_call2(Stdlib_Int[12], nesting, 0)) return nesting; function g$0(param){ return 1 < caml_call1(Stdlib_Random[5], 3) ? 2 + this_will_be_undefined(0) | 0 @@ -225,7 +225,7 @@ let () = my_ref := 2 var _a_ = g$0(0); return g$0(0) + _a_ | 0; } - var _a_ = handle_state([0, 1]), _a_ = caml_call1(Stdlib_Int[12], _a_); + var _a_ = handle_state([0, 1]), _a_ = caml_call1(Stdlib_Int[22], _a_); caml_call1(Stdlib[46], _a_); var my_ref = [0, 1]; my_ref[1] = 2; diff --git a/compiler/tests-full/dune b/compiler/tests-full/dune index bcff802d65..22932c77b2 100644 --- a/compiler/tests-full/dune +++ b/compiler/tests-full/dune @@ -2,8 +2,8 @@ (targets stdlib.cma.js) (enabled_if (and - (>= %{ocaml_version} "5.4") - (< %{ocaml_version} "5.5"))) + (>= %{ocaml_version} "5.5") + (< %{ocaml_version} "5.6"))) (action (run %{bin:js_of_ocaml} @@ -19,8 +19,8 @@ (targets stdlib.cma.output.js) (enabled_if (and - (>= %{ocaml_version} "5.4") - (< %{ocaml_version} "5.5"))) + (>= %{ocaml_version} "5.5") + (< %{ocaml_version} "5.6"))) (action (with-stdout-to %{targets} @@ -30,8 +30,8 @@ (alias runtest) (enabled_if (and - (>= %{ocaml_version} "5.4") - (< %{ocaml_version} "5.5"))) + (>= %{ocaml_version} "5.5") + (< %{ocaml_version} "5.6"))) (action (diff stdlib.cma.expected.js stdlib.cma.output.js))) @@ -43,8 +43,8 @@ (targets shapes.cma.js) (enabled_if (and - (>= %{ocaml_version} "5.4") - (< %{ocaml_version} "5.5"))) + (>= %{ocaml_version} "5.5") + (< %{ocaml_version} "5.6"))) (action (run %{bin:js_of_ocaml} @@ -60,8 +60,8 @@ (targets shapes.cma.output.js) (enabled_if (and - (>= %{ocaml_version} "5.4") - (< %{ocaml_version} "5.5"))) + (>= %{ocaml_version} "5.5") + (< %{ocaml_version} "5.6"))) (action (with-stdout-to %{targets} @@ -71,8 +71,8 @@ (alias runtest) (enabled_if (and - (>= %{ocaml_version} "5.4") - (< %{ocaml_version} "5.5"))) + (>= %{ocaml_version} "5.5") + (< %{ocaml_version} "5.6"))) (action (diff shapes.cma.expected.js shapes.cma.output.js))) diff --git a/compiler/tests-full/stdlib.cma.expected.js b/compiler/tests-full/stdlib.cma.expected.js index ede71f0ed7..d56737b5db 100644 --- a/compiler/tests-full/stdlib.cma.expected.js +++ b/compiler/tests-full/stdlib.cma.expected.js @@ -1302,7 +1302,7 @@ //# unitInfo: Provides: Stdlib__Sys //# unitInfo: Requires: Stdlib -//# shape: Stdlib__Sys:[N,F(1),N,N,N,[N],N,N,N,N,N,N,N,N,N,F(2)*,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F(1),F(1),F(1),N,F(1)*,N,N,N,F(1),F(1),[F(2)*]] +//# shape: Stdlib__Sys:[N,N,F(1),N,N,N,[N],N,N,N,N,N,N,N,N,N,F(2)*,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F(1),F(1),F(1),N,F(1)*,N,N,N,F(1),F(1),[F(2)*]] (function (globalThis){ "use strict"; @@ -1310,117 +1310,126 @@ runtime = globalThis.jsoo_runtime, Stdlib = runtime.caml_get_global("Stdlib"), executable_name = - /*<>*/ runtime.caml_sys_executable_name(0), - os_type = /*<>*/ runtime.caml_sys_get_config(0)[1], - unix = /*<>*/ runtime.caml_sys_const_ostype_unix(0), + /*<>*/ runtime.caml_sys_executable_name(0), + match = /*<>*/ runtime.caml_sys_proc_self_exe(0); + /*<>*/ if(match) + var + proc_self_exe = match[1], + runtime_executable = /*<>*/ proc_self_exe; + else + /*<>*/ runtime_executable = executable_name; + var + os_type = /*<>*/ runtime.caml_sys_get_config(0)[1], + unix = /*<>*/ runtime.caml_sys_const_ostype_unix(0), win32 = runtime.caml_sys_const_ostype_win32(0), cygwin = runtime.caml_sys_const_ostype_cygwin(0), max_array_length = runtime.caml_sys_const_max_wosize(0), max_floatarray_length = max_array_length / 2 | 0, max_string_length = (4 * max_array_length | 0) - 1 | 0, io_buffer_size = - /*<>*/ runtime.caml_sys_io_buffer_size(0); - function set_signal(sig_num, sig_beh){ /*<>*/ return 0;} + /*<>*/ runtime.caml_sys_io_buffer_size(0); + function set_signal(sig_num, sig_beh){ /*<>*/ return 0;} function signal_to_string(s){ - /*<>*/ if(s === -1) - /*<>*/ return "SIGABRT"; - /*<>*/ if(s === -2) - /*<>*/ return "SIGALRM"; - /*<>*/ if(s === -3) - /*<>*/ return "SIGFPE"; - /*<>*/ if(s === -4) - /*<>*/ return "SIGHUP"; - /*<>*/ if(s === -5) - /*<>*/ return "SIGILL"; - /*<>*/ if(s === -6) - /*<>*/ return "SIGINT"; - /*<>*/ if(s === -7) - /*<>*/ return "SIGKILL"; - /*<>*/ if(s === -8) - /*<>*/ return "SIGPIPE"; - /*<>*/ if(s === -9) - /*<>*/ return "SIGQUIT"; - /*<>*/ if(s === -10) - /*<>*/ return "SIGSEGV"; - /*<>*/ if(s === -11) - /*<>*/ return "SIGTERM"; - /*<>*/ if(s === -12) - /*<>*/ return "SIGUSR1"; - /*<>*/ if(s === -13) - /*<>*/ return "SIGUSR2"; - /*<>*/ if(s === -14) - /*<>*/ return "SIGCHLD"; - /*<>*/ if(s === -15) - /*<>*/ return "SIGCONT"; - /*<>*/ if(s === -16) - /*<>*/ return "SIGSTOP"; - /*<>*/ if(s === -17) - /*<>*/ return "SIGTSTP"; - /*<>*/ if(s === -18) - /*<>*/ return "SIGTTIN"; - /*<>*/ if(s === -19) - /*<>*/ return "SIGTTOU"; - /*<>*/ if(s === -20) - /*<>*/ return "SIGVTALRM"; - /*<>*/ if(s === -21) - /*<>*/ return "SIGPROF"; - /*<>*/ if(s === -22) - /*<>*/ return "SIGBUS"; - /*<>*/ if(s === -23) - /*<>*/ return "SIGPOLL"; - /*<>*/ if(s === -24) - /*<>*/ return "SIGSYS"; - /*<>*/ if(s === -25) - /*<>*/ return "SIGTRAP"; - /*<>*/ if(s === -26) - /*<>*/ return "SIGURG"; - /*<>*/ if(s === -27) - /*<>*/ return "SIGXCPU"; - /*<>*/ if(s === -28) - /*<>*/ return "SIGXFSZ"; - /*<>*/ if(s === -29) - /*<>*/ return "SIGIO"; - /*<>*/ if(s === -30) - /*<>*/ return "SIGWINCH"; - /*<>*/ if(s < -30) - /*<>*/ return Stdlib[1].call - (null, "Sys.signal_to_string") /*<>*/ ; - var - _a_ = /*<>*/ Stdlib[33].call(null, s), + /*<>*/ if(s === -1) + /*<>*/ return "SIGABRT"; + /*<>*/ if(s === -2) + /*<>*/ return "SIGALRM"; + /*<>*/ if(s === -3) + /*<>*/ return "SIGFPE"; + /*<>*/ if(s === -4) + /*<>*/ return "SIGHUP"; + /*<>*/ if(s === -5) + /*<>*/ return "SIGILL"; + /*<>*/ if(s === -6) + /*<>*/ return "SIGINT"; + /*<>*/ if(s === -7) + /*<>*/ return "SIGKILL"; + /*<>*/ if(s === -8) + /*<>*/ return "SIGPIPE"; + /*<>*/ if(s === -9) + /*<>*/ return "SIGQUIT"; + /*<>*/ if(s === -10) + /*<>*/ return "SIGSEGV"; + /*<>*/ if(s === -11) + /*<>*/ return "SIGTERM"; + /*<>*/ if(s === -12) + /*<>*/ return "SIGUSR1"; + /*<>*/ if(s === -13) + /*<>*/ return "SIGUSR2"; + /*<>*/ if(s === -14) + /*<>*/ return "SIGCHLD"; + /*<>*/ if(s === -15) + /*<>*/ return "SIGCONT"; + /*<>*/ if(s === -16) + /*<>*/ return "SIGSTOP"; + /*<>*/ if(s === -17) + /*<>*/ return "SIGTSTP"; + /*<>*/ if(s === -18) + /*<>*/ return "SIGTTIN"; + /*<>*/ if(s === -19) + /*<>*/ return "SIGTTOU"; + /*<>*/ if(s === -20) + /*<>*/ return "SIGVTALRM"; + /*<>*/ if(s === -21) + /*<>*/ return "SIGPROF"; + /*<>*/ if(s === -22) + /*<>*/ return "SIGBUS"; + /*<>*/ if(s === -23) + /*<>*/ return "SIGPOLL"; + /*<>*/ if(s === -24) + /*<>*/ return "SIGSYS"; + /*<>*/ if(s === -25) + /*<>*/ return "SIGTRAP"; + /*<>*/ if(s === -26) + /*<>*/ return "SIGURG"; + /*<>*/ if(s === -27) + /*<>*/ return "SIGXCPU"; + /*<>*/ if(s === -28) + /*<>*/ return "SIGXFSZ"; + /*<>*/ if(s === -29) + /*<>*/ return "SIGIO"; + /*<>*/ if(s === -30) + /*<>*/ return "SIGWINCH"; + /*<>*/ if(s < -30) + /*<>*/ return Stdlib[1].call + (null, "Sys.signal_to_string") /*<>*/ ; + var + _a_ = /*<>*/ Stdlib[33].call(null, s), _a_ = Stdlib[28].call(null, _a_, ")"); - /*<>*/ return Stdlib[28].call(null, "SIG(", _a_); + /*<>*/ return Stdlib[28].call(null, "SIG(", _a_); } function signal_of_int(i){ - /*<>*/ return 0 <= i - ? /*<>*/ runtime.caml_sys_rev_convert_signal_number + /*<>*/ return 0 <= i + ? /*<>*/ runtime.caml_sys_rev_convert_signal_number (i) - : /*<>*/ Stdlib + : /*<>*/ Stdlib [1].call - (null, "Sys.signal_of_int") /*<>*/ ; + (null, "Sys.signal_of_int") /*<>*/ ; } function signal_to_int(i){ - /*<>*/ return i < -30 - ? /*<>*/ Stdlib + /*<>*/ return i < -30 + ? /*<>*/ Stdlib [1].call (null, "Sys.signal_to_int") - : /*<>*/ runtime.caml_sys_convert_signal_number - (i) /*<>*/ ; + : /*<>*/ runtime.caml_sys_convert_signal_number + (i) /*<>*/ ; } var Break = - /*<>*/ [248, + /*<>*/ [248, "Stdlib.Sys.Break", runtime.caml_fresh_oo_id(0)]; function catch_break(on){ - /*<>*/ return on ? 0 : 0 /*<>*/ ; + /*<>*/ return on ? 0 : 0 /*<>*/ ; } function Make(Immediate, Non_immediate){ - /*<>*/ return [0, 1]; + /*<>*/ return [0, 1]; } var Stdlib_Sys = - /*<>*/ [0, + /*<>*/ [0, executable_name, + runtime_executable, runtime.caml_sys_getenv_opt, io_buffer_size, [0, 0], @@ -1471,9 +1480,9 @@ signal_to_int, Break, catch_break, - "5.4.0", + "5.5.0~beta1", 0, - [0, 5, 4, 0, 0], + [0, 5, 5, 0, [0, [0, 1, "beta1"]]], runtime.caml_ml_enable_runtime_warnings, runtime.caml_ml_runtime_warnings_enabled, [0, Make]]; @@ -1532,7 +1541,7 @@ } function name(slot){ /*<>*/ return slot[1];} function id(slot){ /*<>*/ return slot[2];} - var max_ephe_length = /*<>*/ Stdlib_Sys[14] - 2 | 0; + var max_ephe_length = /*<>*/ Stdlib_Sys[15] - 2 | 0; function create(l){ var _a_ = /*<>*/ 0 <= l, @@ -1819,21 +1828,26 @@ (globalThis)); //# unitInfo: Provides: Stdlib__Lazy -//# unitInfo: Requires: CamlinternalLazy, Stdlib, Stdlib__Obj -//# shape: Stdlib__Lazy:[N,F(2)*,F(1),F(1),F(2),F(1),F(1)] +//# unitInfo: Requires: CamlinternalLazy, Stdlib, Stdlib__Atomic, Stdlib__Obj +//# shape: Stdlib__Lazy:[N,F(2)*,F(1),F(1),F(2),F(1),F(1),N] (function (globalThis){ "use strict"; var runtime = globalThis.jsoo_runtime, caml_get_global = runtime.caml_get_global, - caml_obj_tag = runtime.caml_obj_tag; + caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, + caml_ml_mutex_lock = runtime.caml_ml_mutex_lock, + caml_ml_mutex_unlock = runtime.caml_ml_mutex_unlock, + caml_obj_tag = runtime.caml_obj_tag, + caml_wrap_exception = runtime.caml_wrap_exception; function caml_call1(f, a0){ return (f.l >= 0 ? f.l : f.l = f.length) === 1 ? f(a0) : runtime.caml_call_gen(f, [a0]); } var + Stdlib_Atomic = caml_get_global("Stdlib__Atomic"), CamlinternalLazy = caml_get_global("CamlinternalLazy"), Stdlib_Obj = caml_get_global("Stdlib__Obj"), Undefined = CamlinternalLazy[1]; @@ -1896,8 +1910,79 @@ /*<>*/ return /*<>*/ from_val ( /*<>*/ caml_call1(f, _a_)) /*<>*/ ; } + function from_val$0(v){ + /*<>*/ return Stdlib_Atomic[1].call(null, [2, [0, v]]) /*<>*/ ; + } + function from_fun$0(f){ + /*<>*/ return Stdlib_Atomic[1].call(null, [0, f]) /*<>*/ ; + } + function is_val$0(th){ + var match = /*<>*/ Stdlib_Atomic[3].call(null, th); + /*<>*/ if(2 === match[0] && 0 === match[1][0]) + /*<>*/ return 1; + /*<>*/ return 0; + /*<>*/ } + function force(th){ + /*<>*/ for(;;){ + var thunk = /*<>*/ Stdlib_Atomic[3].call(null, th); + /*<>*/ switch(thunk[0]){ + case 0: + var + f = thunk[1], + mut = /*<>*/ runtime.caml_ml_mutex_new(0); + /*<>*/ caml_ml_mutex_lock(mut); + /*<>*/ if + (Stdlib_Atomic[6].call(null, th, thunk, [1, mut])){ + a: + { + /*<>*/ try{ + var v = /*<>*/ caml_call1(f, 0); + } + catch(exn$0){ + var + exn = /*<>*/ caml_wrap_exception(exn$0), + bt = + /*<>*/ runtime.caml_get_exception_raw_backtrace + (0); + /*<>*/ Stdlib_Atomic[4].call + (null, th, [2, [1, [0, exn, bt]]]); + break a; + } + /*<>*/ Stdlib_Atomic[4].call(null, th, [2, [0, v]]); + } + /*<>*/ caml_ml_mutex_unlock(mut); + } + else + /*<>*/ caml_ml_mutex_unlock(mut); + break; + case 1: + var mut$0 = /*<>*/ thunk[1]; + /*<>*/ caml_ml_mutex_lock(mut$0); + /*<>*/ caml_ml_mutex_unlock(mut$0); + break; + default: + var _a_ = /*<>*/ thunk[1]; + if(0 === _a_[0]){ + var v$0 = _a_[1]; + /*<>*/ return v$0; + } + /*<>*/ _a_ = _a_[1]; + var bt$0 = _a_[2], exn$0 = _a_[1]; + /*<>*/ runtime.caml_restore_raw_backtrace(exn$0, bt$0); + throw caml_maybe_attach_backtrace(exn$0, 0); + } + } + /*<>*/ } /*<>*/ runtime.caml_register_global - ([0, Undefined, map, is_val, from_val, map_val, from_fun, force_val], + ([0, + Undefined, + map, + is_val, + from_val, + map_val, + from_fun, + force_val, + [0, is_val$0, from_val$0, from_fun$0, force]], "Stdlib__Lazy"); return; } @@ -1905,7 +1990,7 @@ //# unitInfo: Provides: Stdlib__Seq //# unitInfo: Requires: CamlinternalLazy, Stdlib, Stdlib__Atomic, Stdlib__Lazy -//# shape: Stdlib__Seq:[F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(4),F(3),F(3),F(3),F(3),F(1)*,F(2)*,F(3)*,F(2)*,F(2),F(3),F(2)*,F(2),F(2),F(2)*->F(1)*,F(3),F(2)*->F(1),F(3),F(3),F(3),F(3)*->F(1)*,F(2)->F(1),F(2),F(3),F(3),F(3),F(1)->F(1),N,F(1)*->F(1),F(2),F(3),F(2),$0=F(3),$0,F(3),F(4),F(3),F(4),F(2)*->F(1),F(3)*->F(1),$1=F(1)*,$1,F(2)*,F(2)*,F(1)*->F(1),F(1)*->F(1),F(2)*] +//# shape: Stdlib__Seq:[F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(4),F(3),F(3),F(3),F(3),F(1)*,F(2)*,F(3)*,F(2)*,F(2),F(3),F(2)*,F(2),F(2),F(2)*->F(1)*,F(2),F(3),F(2)*->F(1),F(3),F(3),F(3),F(3)*->F(1)*,F(2)->F(1),F(2),F(3),F(3),F(3),F(1)->F(1),N,F(1)*->F(1),F(2),F(3),F(2),$0=F(3),$0,F(3),F(4),F(3),F(4),F(2)*->F(1),F(3)*->F(1),$1=F(1)*,$1,F(2)*,F(2)*,F(1)*->F(1),F(1)*->F(1),F(2)*] (function (globalThis){ "use strict"; @@ -1946,830 +2031,833 @@ function singleton(x, param){ /*<>*/ return [0, x, empty]; /*<>*/ } + function delay(delayed_seq, param){ + /*<>*/ return caml_call2(delayed_seq, 0, 0) /*<>*/ ; + } function append(seq1, seq2, _r_){ - /*<>*/ _r_ = caml_call1(seq1, 0); - /*<>*/ if(! _r_) - /*<>*/ return caml_call1(seq2, 0) /*<>*/ ; - var next = /*<>*/ _r_[2], x = _r_[1]; - /*<>*/ return [0, + /*<>*/ _r_ = caml_call1(seq1, 0); + /*<>*/ if(! _r_) + /*<>*/ return caml_call1(seq2, 0) /*<>*/ ; + var next = /*<>*/ _r_[2], x = _r_[1]; + /*<>*/ return [0, x, function(_r_){ - /*<>*/ return append(next, seq2, _r_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return append(next, seq2, _r_); + }] /*<>*/ ; + /*<>*/ } function map(f, seq, _r_){ - /*<>*/ _r_ = caml_call1(seq, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; - var next = /*<>*/ _r_[2], x = _r_[1]; - /*<>*/ return [0, + /*<>*/ _r_ = caml_call1(seq, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; + var next = /*<>*/ _r_[2], x = _r_[1]; + /*<>*/ return [0, caml_call1(f, x), - function(_r_){ /*<>*/ return map(f, next, _r_);}] /*<>*/ ; - /*<>*/ } + function(_r_){ /*<>*/ return map(f, next, _r_);}] /*<>*/ ; + /*<>*/ } function filter_map(f, seq$0, _r_){ - var seq = /*<>*/ seq$0; + var seq = /*<>*/ seq$0; for(;;){ - /*<>*/ _r_ = caml_call1(seq, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; + /*<>*/ _r_ = caml_call1(seq, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; var - next = /*<>*/ _r_[2], + next = /*<>*/ _r_[2], x = _r_[1], - _r_ = /*<>*/ caml_call1(f, x); - /*<>*/ if(_r_) break; + _r_ = /*<>*/ caml_call1(f, x); + /*<>*/ if(_r_) break; seq = next; } - var y = /*<>*/ _r_[1]; - /*<>*/ return [0, + var y = /*<>*/ _r_[1]; + /*<>*/ return [0, y, function(_r_){ - /*<>*/ return filter_map(f, next, _r_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return filter_map(f, next, _r_); + }] /*<>*/ ; + /*<>*/ } function filter(f, seq$0, _r_){ - var seq = /*<>*/ seq$0; + var seq = /*<>*/ seq$0; for(;;){ - /*<>*/ _r_ = caml_call1(seq, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; - var next = /*<>*/ _r_[2], x = _r_[1]; - /*<>*/ if(caml_call1(f, x)) break; - /*<>*/ seq = next; + /*<>*/ _r_ = caml_call1(seq, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; + var next = /*<>*/ _r_[2], x = _r_[1]; + /*<>*/ if(caml_call1(f, x)) break; + /*<>*/ seq = next; } - /*<>*/ return [0, + /*<>*/ return [0, x, - function(_r_){ /*<>*/ return filter(f, next, _r_);}] /*<>*/ ; - /*<>*/ } + function(_r_){ /*<>*/ return filter(f, next, _r_);}] /*<>*/ ; + /*<>*/ } function filteri_aux(f, i$1, seq$0, _r_){ - var i = /*<>*/ i$1, seq = seq$0; + var i = /*<>*/ i$1, seq = seq$0; for(;;){ - /*<>*/ _r_ = caml_call1(seq, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; + /*<>*/ _r_ = caml_call1(seq, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; var - next = /*<>*/ _r_[2], + next = /*<>*/ _r_[2], x = _r_[1], - i$0 = /*<>*/ i + 1 | 0; - /*<>*/ if(caml_call2(f, i, x)) break; - /*<>*/ i = i$0; + i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(caml_call2(f, i, x)) break; + /*<>*/ i = i$0; seq = next; } - /*<>*/ return [0, + /*<>*/ return [0, x, function(_r_){ - /*<>*/ return filteri_aux(f, i$0, next, _r_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return filteri_aux(f, i$0, next, _r_); + }] /*<>*/ ; + /*<>*/ } function filteri(f, seq, param){ - /*<>*/ return filteri_aux(f, 0, seq, 0) /*<>*/ ; + /*<>*/ return filteri_aux(f, 0, seq, 0) /*<>*/ ; } function concat(seq, _r_){ - /*<>*/ _r_ = caml_call1(seq, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; - var next = /*<>*/ _r_[2], x = _r_[1]; - /*<>*/ return append + /*<>*/ _r_ = caml_call1(seq, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; + var next = /*<>*/ _r_[2], x = _r_[1]; + /*<>*/ return append (x, - function(_r_){ /*<>*/ return concat(next, _r_);}, - 0) /*<>*/ ; + function(_r_){ /*<>*/ return concat(next, _r_);}, + 0) /*<>*/ ; } function flat_map(f, seq, _r_){ - /*<>*/ _r_ = caml_call1(seq, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; - var next = /*<>*/ _r_[2], x = _r_[1]; - /*<>*/ return /*<>*/ append - ( /*<>*/ caml_call1(f, x), + /*<>*/ _r_ = caml_call1(seq, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; + var next = /*<>*/ _r_[2], x = _r_[1]; + /*<>*/ return /*<>*/ append + ( /*<>*/ caml_call1(f, x), function(_r_){ - /*<>*/ return flat_map(f, next, _r_); + /*<>*/ return flat_map(f, next, _r_); }, - 0) /*<>*/ ; + 0) /*<>*/ ; } function fold_left(f, acc$1, seq$0){ - var acc = /*<>*/ acc$1, seq = seq$0; + var acc = /*<>*/ acc$1, seq = seq$0; for(;;){ - var match = /*<>*/ caml_call1(seq, 0); - /*<>*/ if(! match) /*<>*/ return acc; + var match = /*<>*/ caml_call1(seq, 0); + /*<>*/ if(! match) /*<>*/ return acc; var - next = /*<>*/ match[2], + next = /*<>*/ match[2], x = match[1], - acc$0 = /*<>*/ caml_call2(f, acc, x); - /*<>*/ acc = acc$0; + acc$0 = /*<>*/ caml_call2(f, acc, x); + /*<>*/ acc = acc$0; seq = next; } - /*<>*/ } + /*<>*/ } function iter(f, seq$0){ - var seq = /*<>*/ seq$0; + var seq = /*<>*/ seq$0; for(;;){ - var match = /*<>*/ caml_call1(seq, 0); - /*<>*/ if(! match) /*<>*/ return 0; - var next = /*<>*/ match[2], x = match[1]; - /*<>*/ caml_call1(f, x); - /*<>*/ seq = next; + var match = /*<>*/ caml_call1(seq, 0); + /*<>*/ if(! match) /*<>*/ return 0; + var next = /*<>*/ match[2], x = match[1]; + /*<>*/ caml_call1(f, x); + /*<>*/ seq = next; } - /*<>*/ } + /*<>*/ } function unfold(f, u, _r_){ - /*<>*/ _r_ = caml_call1(f, u); - /*<>*/ if(! _r_) /*<>*/ return 0; - /*<>*/ _r_ = _r_[1]; + /*<>*/ _r_ = caml_call1(f, u); + /*<>*/ if(! _r_) /*<>*/ return 0; + /*<>*/ _r_ = _r_[1]; var u$0 = _r_[2], x = _r_[1]; - /*<>*/ return [0, + /*<>*/ return [0, x, - function(_r_){ /*<>*/ return unfold(f, u$0, _r_);}] /*<>*/ ; - /*<>*/ } + function(_r_){ /*<>*/ return unfold(f, u$0, _r_);}] /*<>*/ ; + /*<>*/ } function is_empty(xs){ - /*<>*/ return caml_call1(xs, 0) ? 0 : 1 /*<>*/ ; + /*<>*/ return caml_call1(xs, 0) ? 0 : 1 /*<>*/ ; } function uncons(xs){ - var match = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! match) /*<>*/ return 0; - var xs$0 = /*<>*/ match[2], x = match[1]; - /*<>*/ return [0, [0, x, xs$0]]; - /*<>*/ } + var match = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! match) /*<>*/ return 0; + var xs$0 = /*<>*/ match[2], x = match[1]; + /*<>*/ return [0, [0, x, xs$0]]; + /*<>*/ } function length(xs$1){ - var accu = /*<>*/ 0, xs = xs$1; + var accu = /*<>*/ 0, xs = xs$1; for(;;){ - var match = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! match) /*<>*/ return accu; + var match = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! match) /*<>*/ return accu; var - xs$0 = /*<>*/ match[2], - accu$0 = /*<>*/ accu + 1 | 0; + xs$0 = /*<>*/ match[2], + accu$0 = /*<>*/ accu + 1 | 0; accu = accu$0; xs = xs$0; } - /*<>*/ } + /*<>*/ } function iteri(f, xs$1){ - var i = /*<>*/ 0, xs = xs$1; + var i = /*<>*/ 0, xs = xs$1; for(;;){ - var match = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! match) /*<>*/ return 0; - var xs$0 = /*<>*/ match[2], x = match[1]; - /*<>*/ caml_call2(f, i, x); - var i$0 = /*<>*/ i + 1 | 0; + var match = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! match) /*<>*/ return 0; + var xs$0 = /*<>*/ match[2], x = match[1]; + /*<>*/ caml_call2(f, i, x); + var i$0 = /*<>*/ i + 1 | 0; i = i$0; xs = xs$0; } - /*<>*/ } + /*<>*/ } function fold_lefti(f, accu$1, xs$1){ - var accu = /*<>*/ accu$1, i = 0, xs = xs$1; + var accu = /*<>*/ accu$1, i = 0, xs = xs$1; for(;;){ - var match = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! match) /*<>*/ return accu; + var match = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! match) /*<>*/ return accu; var - xs$0 = /*<>*/ match[2], + xs$0 = /*<>*/ match[2], x = match[1], - accu$0 = /*<>*/ caml_call3(f, accu, i, x), - i$0 = /*<>*/ i + 1 | 0; + accu$0 = /*<>*/ caml_call3(f, accu, i, x), + i$0 = /*<>*/ i + 1 | 0; accu = accu$0; i = i$0; xs = xs$0; } - /*<>*/ } + /*<>*/ } function for_all(p, xs$1){ - var xs = /*<>*/ xs$1; + var xs = /*<>*/ xs$1; for(;;){ - var _r_ = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! _r_) /*<>*/ return 1; + var _r_ = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! _r_) /*<>*/ return 1; var - xs$0 = /*<>*/ _r_[2], + xs$0 = /*<>*/ _r_[2], x = _r_[1], - _r_ = /*<>*/ caml_call1(p, x); - /*<>*/ if(! _r_) return _r_; + _r_ = /*<>*/ caml_call1(p, x); + /*<>*/ if(! _r_) return _r_; xs = xs$0; } - /*<>*/ } + /*<>*/ } function exists(p, xs$1){ - var xs = /*<>*/ xs$1; + var xs = /*<>*/ xs$1; for(;;){ - var _r_ = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; + var _r_ = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; var - xs$0 = /*<>*/ _r_[2], + xs$0 = /*<>*/ _r_[2], x = _r_[1], - _r_ = /*<>*/ caml_call1(p, x); - /*<>*/ if(_r_) return _r_; + _r_ = /*<>*/ caml_call1(p, x); + /*<>*/ if(_r_) return _r_; xs = xs$0; } - /*<>*/ } + /*<>*/ } function find(p, xs$1){ - var xs = /*<>*/ xs$1; + var xs = /*<>*/ xs$1; for(;;){ - var match = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! match) /*<>*/ return 0; - var xs$0 = /*<>*/ match[2], x = match[1]; - /*<>*/ if(caml_call1(p, x)) - /*<>*/ return [0, x]; - /*<>*/ xs = xs$0; - } - /*<>*/ } + var match = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! match) /*<>*/ return 0; + var xs$0 = /*<>*/ match[2], x = match[1]; + /*<>*/ if(caml_call1(p, x)) + /*<>*/ return [0, x]; + /*<>*/ xs = xs$0; + } + /*<>*/ } function find_index(p, xs){ - var i = /*<>*/ 0, xs$0 = xs; + var i = /*<>*/ 0, xs$0 = xs; for(;;){ - var match = /*<>*/ caml_call1(xs$0, 0); - /*<>*/ if(! match) /*<>*/ return 0; - var xs$1 = /*<>*/ match[2], x = match[1]; - /*<>*/ if(caml_call1(p, x)) - /*<>*/ return [0, i]; - var i$0 = /*<>*/ i + 1 | 0; + var match = /*<>*/ caml_call1(xs$0, 0); + /*<>*/ if(! match) /*<>*/ return 0; + var xs$1 = /*<>*/ match[2], x = match[1]; + /*<>*/ if(caml_call1(p, x)) + /*<>*/ return [0, i]; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; xs$0 = xs$1; } - /*<>*/ } + /*<>*/ } function find_map(f, xs$1){ - var xs = /*<>*/ xs$1; + var xs = /*<>*/ xs$1; for(;;){ - var match = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! match) /*<>*/ return 0; + var match = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! match) /*<>*/ return 0; var - xs$0 = /*<>*/ match[2], + xs$0 = /*<>*/ match[2], x = match[1], - result = /*<>*/ caml_call1(f, x); - /*<>*/ if(result) /*<>*/ return result; - /*<>*/ xs = xs$0; + result = /*<>*/ caml_call1(f, x); + /*<>*/ if(result) /*<>*/ return result; + /*<>*/ xs = xs$0; } - /*<>*/ } + /*<>*/ } function find_mapi(f, xs){ - var i = /*<>*/ 0, xs$0 = xs; + var i = /*<>*/ 0, xs$0 = xs; for(;;){ - var match = /*<>*/ caml_call1(xs$0, 0); - /*<>*/ if(! match) /*<>*/ return 0; + var match = /*<>*/ caml_call1(xs$0, 0); + /*<>*/ if(! match) /*<>*/ return 0; var - xs$1 = /*<>*/ match[2], + xs$1 = /*<>*/ match[2], x = match[1], - result = /*<>*/ caml_call2(f, i, x); - /*<>*/ if(result) /*<>*/ return result; - var i$0 = /*<>*/ i + 1 | 0; + result = /*<>*/ caml_call2(f, i, x); + /*<>*/ if(result) /*<>*/ return result; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; xs$0 = xs$1; } - /*<>*/ } + /*<>*/ } function iter2(f, xs$1, ys$1){ - var xs = /*<>*/ xs$1, ys = ys$1; + var xs = /*<>*/ xs$1, ys = ys$1; for(;;){ - var _r_ = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; + var _r_ = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; var - xs$0 = /*<>*/ _r_[2], + xs$0 = /*<>*/ _r_[2], x = _r_[1], - _r_ = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; - var ys$0 = /*<>*/ _r_[2], y = _r_[1]; - /*<>*/ caml_call2(f, x, y); - /*<>*/ xs = xs$0; + _r_ = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; + var ys$0 = /*<>*/ _r_[2], y = _r_[1]; + /*<>*/ caml_call2(f, x, y); + /*<>*/ xs = xs$0; ys = ys$0; } - /*<>*/ } + /*<>*/ } function fold_left2(f, accu$1, xs$1, ys$1){ - var accu = /*<>*/ accu$1, xs = xs$1, ys = ys$1; + var accu = /*<>*/ accu$1, xs = xs$1, ys = ys$1; for(;;){ - var _r_ = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! _r_) /*<>*/ return accu; + var _r_ = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! _r_) /*<>*/ return accu; var - xs$0 = /*<>*/ _r_[2], + xs$0 = /*<>*/ _r_[2], x = _r_[1], - _r_ = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(! _r_) /*<>*/ return accu; + _r_ = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(! _r_) /*<>*/ return accu; var - ys$0 = /*<>*/ _r_[2], + ys$0 = /*<>*/ _r_[2], y = _r_[1], - accu$0 = /*<>*/ caml_call3(f, accu, x, y); - /*<>*/ accu = accu$0; + accu$0 = /*<>*/ caml_call3(f, accu, x, y); + /*<>*/ accu = accu$0; xs = xs$0; ys = ys$0; } - /*<>*/ } + /*<>*/ } function for_all2(f, xs$1, ys$1){ - var xs = /*<>*/ xs$1, ys = ys$1; + var xs = /*<>*/ xs$1, ys = ys$1; for(;;){ - var _r_ = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! _r_) /*<>*/ return 1; + var _r_ = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! _r_) /*<>*/ return 1; var - xs$0 = /*<>*/ _r_[2], + xs$0 = /*<>*/ _r_[2], x = _r_[1], - _r_ = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(! _r_) /*<>*/ return 1; + _r_ = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(! _r_) /*<>*/ return 1; var - ys$0 = /*<>*/ _r_[2], + ys$0 = /*<>*/ _r_[2], y = _r_[1], - _r_ = /*<>*/ caml_call2(f, x, y); - /*<>*/ if(! _r_) return _r_; + _r_ = /*<>*/ caml_call2(f, x, y); + /*<>*/ if(! _r_) return _r_; xs = xs$0; ys = ys$0; } - /*<>*/ } + /*<>*/ } function exists2(f, xs$1, ys$1){ - var xs = /*<>*/ xs$1, ys = ys$1; + var xs = /*<>*/ xs$1, ys = ys$1; for(;;){ - var _r_ = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; + var _r_ = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; var - xs$0 = /*<>*/ _r_[2], + xs$0 = /*<>*/ _r_[2], x = _r_[1], - _r_ = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(! _r_) /*<>*/ return 0; + _r_ = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(! _r_) /*<>*/ return 0; var - ys$0 = /*<>*/ _r_[2], + ys$0 = /*<>*/ _r_[2], y = _r_[1], - _r_ = /*<>*/ caml_call2(f, x, y); - /*<>*/ if(_r_) return _r_; + _r_ = /*<>*/ caml_call2(f, x, y); + /*<>*/ if(_r_) return _r_; xs = xs$0; ys = ys$0; } - /*<>*/ } + /*<>*/ } function equal(eq, xs$1, ys$1){ - var xs = /*<>*/ xs$1, ys = ys$1; + var xs = /*<>*/ xs$1, ys = ys$1; for(;;){ var - match = /*<>*/ caml_call1(xs, 0), - _r_ = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(match){ + match = /*<>*/ caml_call1(xs, 0), + _r_ = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(match){ if(_r_){ var ys$0 = _r_[2], y = _r_[1], xs$0 = match[2], x = match[1], - _r_ = /*<>*/ caml_call2(eq, x, y); - /*<>*/ if(! _r_) return _r_; + _r_ = /*<>*/ caml_call2(eq, x, y); + /*<>*/ if(! _r_) return _r_; xs = xs$0; ys = ys$0; continue; } } - else if(! _r_) /*<>*/ return 1; - /*<>*/ return 0; + else if(! _r_) /*<>*/ return 1; + /*<>*/ return 0; } - /*<>*/ } + /*<>*/ } function compare(cmp, xs$1, ys$1){ - var xs = /*<>*/ xs$1, ys = ys$1; + var xs = /*<>*/ xs$1, ys = ys$1; for(;;){ var - match = /*<>*/ caml_call1(xs, 0), - match$0 = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(! match) - return match$0 ? -1 : 0 /*<>*/ ; - var xs$0 = /*<>*/ match[2], x = match[1]; - if(! match$0) /*<>*/ return 1; + match = /*<>*/ caml_call1(xs, 0), + match$0 = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(! match) + return match$0 ? -1 : 0 /*<>*/ ; + var xs$0 = /*<>*/ match[2], x = match[1]; + if(! match$0) /*<>*/ return 1; var - ys$0 = /*<>*/ match$0[2], + ys$0 = /*<>*/ match$0[2], y = match$0[1], - c = /*<>*/ caml_call2(cmp, x, y); - /*<>*/ if(0 !== c) /*<>*/ return c; - /*<>*/ xs = xs$0; + c = /*<>*/ caml_call2(cmp, x, y); + /*<>*/ if(0 !== c) /*<>*/ return c; + /*<>*/ xs = xs$0; ys = ys$0; } - /*<>*/ } + /*<>*/ } function init_aux(f, i, j, param){ - /*<>*/ if(i >= j) /*<>*/ return 0; - var _q_ = /*<>*/ i + 1 | 0; - /*<>*/ return [0, + /*<>*/ if(i >= j) /*<>*/ return 0; + var _q_ = /*<>*/ i + 1 | 0; + /*<>*/ return [0, caml_call1(f, i), function(_r_){ - /*<>*/ return init_aux(f, _q_, j, _r_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return init_aux(f, _q_, j, _r_); + }] /*<>*/ ; + /*<>*/ } function init(n, f){ - /*<>*/ if(0 > n) - /*<>*/ return Stdlib[1].call(null, "Seq.init") /*<>*/ ; - /*<>*/ return function(_q_){ - /*<>*/ return init_aux(f, 0, n, _q_);} /*<>*/ ; - /*<>*/ } + /*<>*/ if(0 > n) + /*<>*/ return Stdlib[1].call(null, "Seq.init") /*<>*/ ; + /*<>*/ return function(_q_){ + /*<>*/ return init_aux(f, 0, n, _q_);} /*<>*/ ; + /*<>*/ } function repeat(x, param){ - /*<>*/ return [0, + /*<>*/ return [0, x, - function(_q_){ /*<>*/ return repeat(x, _q_);}] /*<>*/ ; - /*<>*/ } + function(_q_){ /*<>*/ return repeat(x, _q_);}] /*<>*/ ; + /*<>*/ } function forever(f, param){ - /*<>*/ return [0, + /*<>*/ return [0, caml_call1(f, 0), - function(_q_){ /*<>*/ return forever(f, _q_);}] /*<>*/ ; - /*<>*/ } + function(_q_){ /*<>*/ return forever(f, _q_);}] /*<>*/ ; + /*<>*/ } function cycle_nonempty(xs, param){ - /*<>*/ return append + /*<>*/ return append (xs, function(_q_){ - /*<>*/ return cycle_nonempty(xs, _q_); + /*<>*/ return cycle_nonempty(xs, _q_); }, - 0) /*<>*/ ; + 0) /*<>*/ ; } function cycle(xs, _o_){ - /*<>*/ _o_ = caml_call1(xs, 0); - /*<>*/ if(! _o_) /*<>*/ return 0; - var xs$0 = /*<>*/ _o_[2], x = _o_[1]; - function _p_(_q_){ /*<>*/ return cycle_nonempty(xs, _q_);} - /*<>*/ return [0, + /*<>*/ _o_ = caml_call1(xs, 0); + /*<>*/ if(! _o_) /*<>*/ return 0; + var xs$0 = /*<>*/ _o_[2], x = _o_[1]; + function _p_(_q_){ /*<>*/ return cycle_nonempty(xs, _q_);} + /*<>*/ return [0, x, function(_q_){ - /*<>*/ return append(xs$0, _p_, _q_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return append(xs$0, _p_, _q_); + }] /*<>*/ ; + /*<>*/ } function iterate1(f, x, param){ - var y = /*<>*/ caml_call1(f, x); - /*<>*/ return [0, + var y = /*<>*/ caml_call1(f, x); + /*<>*/ return [0, y, - function(_o_){ /*<>*/ return iterate1(f, y, _o_);}] /*<>*/ ; - /*<>*/ } + function(_o_){ /*<>*/ return iterate1(f, y, _o_);}] /*<>*/ ; + /*<>*/ } function iterate(f, x){ - function next(_o_){ /*<>*/ return iterate1(f, x, _o_);} - /*<>*/ return function(param){ - /*<>*/ return [0, x, next];} /*<>*/ ; + function next(_o_){ /*<>*/ return iterate1(f, x, _o_);} + /*<>*/ return function(param){ + /*<>*/ return [0, x, next];} /*<>*/ ; } function mapi_aux(f, i, xs, _m_){ - /*<>*/ _m_ = caml_call1(xs, 0); - /*<>*/ if(! _m_) /*<>*/ return 0; + /*<>*/ _m_ = caml_call1(xs, 0); + /*<>*/ if(! _m_) /*<>*/ return 0; var - xs$0 = /*<>*/ _m_[2], + xs$0 = /*<>*/ _m_[2], x = _m_[1], - _n_ = /*<>*/ i + 1 | 0; - /*<>*/ return [0, + _n_ = /*<>*/ i + 1 | 0; + /*<>*/ return [0, caml_call2(f, i, x), function(_o_){ - /*<>*/ return mapi_aux(f, _n_, xs$0, _o_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return mapi_aux(f, _n_, xs$0, _o_); + }] /*<>*/ ; + /*<>*/ } function mapi(f, xs){ - /*<>*/ return function(_m_){ - /*<>*/ return mapi_aux(f, 0, xs, _m_);} /*<>*/ ; - /*<>*/ } + /*<>*/ return function(_m_){ + /*<>*/ return mapi_aux(f, 0, xs, _m_);} /*<>*/ ; + /*<>*/ } function tail_scan(f, s, xs, _m_){ - /*<>*/ _m_ = caml_call1(xs, 0); - /*<>*/ if(! _m_) /*<>*/ return 0; + /*<>*/ _m_ = caml_call1(xs, 0); + /*<>*/ if(! _m_) /*<>*/ return 0; var - xs$0 = /*<>*/ _m_[2], + xs$0 = /*<>*/ _m_[2], x = _m_[1], - s$0 = /*<>*/ caml_call2(f, s, x); - /*<>*/ return [0, + s$0 = /*<>*/ caml_call2(f, s, x); + /*<>*/ return [0, s$0, function(_m_){ - /*<>*/ return tail_scan(f, s$0, xs$0, _m_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return tail_scan(f, s$0, xs$0, _m_); + }] /*<>*/ ; + /*<>*/ } function scan(f, s, xs){ - function next(_m_){ /*<>*/ return tail_scan(f, s, xs, _m_);} - /*<>*/ return function(param){ - /*<>*/ return [0, s, next];} /*<>*/ ; + function next(_m_){ /*<>*/ return tail_scan(f, s, xs, _m_);} + /*<>*/ return function(param){ + /*<>*/ return [0, s, next];} /*<>*/ ; } function take_aux(n, xs){ - /*<>*/ return 0 === n + /*<>*/ return 0 === n ? empty : function (_m_){ - /*<>*/ _m_ = caml_call1(xs, 0); - /*<>*/ if(! _m_) - /*<>*/ return 0; - var xs$0 = /*<>*/ _m_[2], x = _m_[1]; - /*<>*/ return [0, x, take_aux(n - 1 | 0, xs$0)] /*<>*/ ; - /*<>*/ }; + /*<>*/ _m_ = caml_call1(xs, 0); + /*<>*/ if(! _m_) + /*<>*/ return 0; + var xs$0 = /*<>*/ _m_[2], x = _m_[1]; + /*<>*/ return [0, x, take_aux(n - 1 | 0, xs$0)] /*<>*/ ; + /*<>*/ }; } function take(n, xs){ - /*<>*/ if(n < 0) - /*<>*/ Stdlib[1].call(null, "Seq.take"); - /*<>*/ return take_aux(n, xs) /*<>*/ ; + /*<>*/ if(n < 0) + /*<>*/ Stdlib[1].call(null, "Seq.take"); + /*<>*/ return take_aux(n, xs) /*<>*/ ; } function drop(n, xs){ - /*<>*/ return 0 <= n + /*<>*/ return 0 <= n ? 0 === n ? xs : function (_m_){ - var n$0 = /*<>*/ n, xs$0 = xs; + var n$0 = /*<>*/ n, xs$0 = xs; for(;;){ - /*<>*/ _m_ = caml_call1(xs$0, 0); - /*<>*/ if(! _m_) - /*<>*/ return 0; + /*<>*/ _m_ = caml_call1(xs$0, 0); + /*<>*/ if(! _m_) + /*<>*/ return 0; var - xs$1 = /*<>*/ _m_[2], - n$1 = /*<>*/ n$0 - 1 | 0; - /*<>*/ if(0 === n$1) - /*<>*/ return caml_call1(xs$1, 0) /*<>*/ ; - /*<>*/ n$0 = n$1; + xs$1 = /*<>*/ _m_[2], + n$1 = /*<>*/ n$0 - 1 | 0; + /*<>*/ if(0 === n$1) + /*<>*/ return caml_call1(xs$1, 0) /*<>*/ ; + /*<>*/ n$0 = n$1; xs$0 = xs$1; } - /*<>*/ } - : /*<>*/ Stdlib[1].call(null, "Seq.drop") /*<>*/ ; + /*<>*/ } + : /*<>*/ Stdlib[1].call(null, "Seq.drop") /*<>*/ ; } function take_while(p, xs, _m_){ - /*<>*/ _m_ = caml_call1(xs, 0); - /*<>*/ if(! _m_) /*<>*/ return 0; - var xs$0 = /*<>*/ _m_[2], x = _m_[1]; - /*<>*/ return caml_call1(p, x) + /*<>*/ _m_ = caml_call1(xs, 0); + /*<>*/ if(! _m_) /*<>*/ return 0; + var xs$0 = /*<>*/ _m_[2], x = _m_[1]; + /*<>*/ return caml_call1(p, x) ? [0, x, function(_m_){ - /*<>*/ return take_while(p, xs$0, _m_); + /*<>*/ return take_while(p, xs$0, _m_); }] - : 0 /*<>*/ ; + : 0 /*<>*/ ; } function drop_while(p, xs$1, param){ - var xs = /*<>*/ xs$1; + var xs = /*<>*/ xs$1; for(;;){ - var node = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(! node) /*<>*/ return 0; - var xs$0 = /*<>*/ node[2], x = node[1]; - /*<>*/ if(! caml_call1(p, x)) - /*<>*/ return node; - /*<>*/ xs = xs$0; - } - /*<>*/ } + var node = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(! node) /*<>*/ return 0; + var xs$0 = /*<>*/ node[2], x = node[1]; + /*<>*/ if(! caml_call1(p, x)) + /*<>*/ return node; + /*<>*/ xs = xs$0; + } + /*<>*/ } function group(eq, xs, _i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; var - xs$0 = /*<>*/ _i_[2], + xs$0 = /*<>*/ _i_[2], x = _i_[1], - _j_ = /*<>*/ caml_call1(eq, x); + _j_ = /*<>*/ caml_call1(eq, x); function _k_(_m_){ - /*<>*/ return drop_while(_j_, xs$0, _m_); + /*<>*/ return drop_while(_j_, xs$0, _m_); } - var _l_ = /*<>*/ caml_call1(eq, x); + var _l_ = /*<>*/ caml_call1(eq, x); function next(_m_){ - /*<>*/ return take_while(_l_, xs$0, _m_); + /*<>*/ return take_while(_l_, xs$0, _m_); } - /*<>*/ return [0, + /*<>*/ return [0, function(param){ /*<>*/ return [0, x, next];}, - function(_l_){ /*<>*/ return group(eq, _k_, _l_);}] /*<>*/ ; - /*<>*/ } + function(_l_){ /*<>*/ return group(eq, _k_, _l_);}] /*<>*/ ; + /*<>*/ } var Forced_twice = /*<>*/ [248, "Stdlib.Seq.Forced_twice", runtime.caml_fresh_oo_id(0)], to_lazy = Stdlib_Lazy[6]; function failure(param){ - /*<>*/ throw caml_maybe_attach_backtrace(Forced_twice, 1); - /*<>*/ } + /*<>*/ throw caml_maybe_attach_backtrace(Forced_twice, 1); + /*<>*/ } function memoize(xs){ function s$0(_i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; - var xs$0 = /*<>*/ _i_[2], x = _i_[1]; - /*<>*/ return [0, x, memoize(xs$0)] /*<>*/ ; - /*<>*/ } - var s = /*<>*/ to_lazy(s$0); - /*<>*/ return function(_i_){ - /*<>*/ _i_ = runtime.caml_obj_tag(s); + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; + var xs$0 = /*<>*/ _i_[2], x = _i_[1]; + /*<>*/ return [0, x, memoize(xs$0)] /*<>*/ ; + /*<>*/ } + var s = /*<>*/ to_lazy(s$0); + /*<>*/ return function(_i_){ + /*<>*/ _i_ = runtime.caml_obj_tag(s); if(250 === _i_) return s[1]; if(246 !== _i_ && 244 !== _i_) return s; - return CamlinternalLazy[2].call(null, s) /*<>*/ ;} /*<>*/ ; - /*<>*/ } + return CamlinternalLazy[2].call(null, s) /*<>*/ ;} /*<>*/ ; + /*<>*/ } function once(xs){ function f(_i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; - var xs$0 = /*<>*/ _i_[2], x = _i_[1]; - /*<>*/ return [0, x, once(xs$0)] /*<>*/ ; - /*<>*/ } - var action = /*<>*/ Stdlib_Atomic[1].call(null, f); - /*<>*/ return function(param){ + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; + var xs$0 = /*<>*/ _i_[2], x = _i_[1]; + /*<>*/ return [0, x, once(xs$0)] /*<>*/ ; + /*<>*/ } + var action = /*<>*/ Stdlib_Atomic[1].call(null, f); + /*<>*/ return function(param){ var - f = /*<>*/ Stdlib_Atomic[5].call(null, action, failure); - /*<>*/ return caml_call1(f, 0) /*<>*/ ;} /*<>*/ ; - /*<>*/ } + f = /*<>*/ Stdlib_Atomic[5].call(null, action, failure); + /*<>*/ return caml_call1(f, 0) /*<>*/ ;} /*<>*/ ; + /*<>*/ } function zip(xs, ys, _i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; var - xs$0 = /*<>*/ _i_[2], + xs$0 = /*<>*/ _i_[2], x = _i_[1], - _i_ = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; - var ys$0 = /*<>*/ _i_[2], y = _i_[1]; - /*<>*/ return [0, + _i_ = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; + var ys$0 = /*<>*/ _i_[2], y = _i_[1]; + /*<>*/ return [0, [0, x, y], - function(_i_){ /*<>*/ return zip(xs$0, ys$0, _i_);}] /*<>*/ ; - /*<>*/ } + function(_i_){ /*<>*/ return zip(xs$0, ys$0, _i_);}] /*<>*/ ; + /*<>*/ } function map2(f, xs, ys, _i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; var - xs$0 = /*<>*/ _i_[2], + xs$0 = /*<>*/ _i_[2], x = _i_[1], - _i_ = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; - var ys$0 = /*<>*/ _i_[2], y = _i_[1]; - /*<>*/ return [0, + _i_ = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; + var ys$0 = /*<>*/ _i_[2], y = _i_[1]; + /*<>*/ return [0, caml_call2(f, x, y), function(_i_){ - /*<>*/ return map2(f, xs$0, ys$0, _i_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return map2(f, xs$0, ys$0, _i_); + }] /*<>*/ ; + /*<>*/ } function interleave(xs, ys, _i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) - /*<>*/ return caml_call1(ys, 0) /*<>*/ ; - var xs$0 = /*<>*/ _i_[2], x = _i_[1]; - /*<>*/ return [0, + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) + /*<>*/ return caml_call1(ys, 0) /*<>*/ ; + var xs$0 = /*<>*/ _i_[2], x = _i_[1]; + /*<>*/ return [0, x, function(_i_){ - /*<>*/ return interleave(ys, xs$0, _i_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return interleave(ys, xs$0, _i_); + }] /*<>*/ ; + /*<>*/ } function sorted_merge1(cmp, x, xs, y, ys){ - /*<>*/ return 0 < caml_call2(cmp, x, y) + /*<>*/ return 0 < caml_call2(cmp, x, y) ? [0, y, function(_i_){ - /*<>*/ _i_ = caml_call1(ys, 0); - /*<>*/ if(! _i_) - /*<>*/ return [0, x, xs]; - var ys$0 = /*<>*/ _i_[2], y = _i_[1]; - /*<>*/ return sorted_merge1(cmp, x, xs, y, ys$0); + /*<>*/ _i_ = caml_call1(ys, 0); + /*<>*/ if(! _i_) + /*<>*/ return [0, x, xs]; + var ys$0 = /*<>*/ _i_[2], y = _i_[1]; + /*<>*/ return sorted_merge1(cmp, x, xs, y, ys$0); }] : [0, x, function(_i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) - /*<>*/ return [0, y, ys]; - var xs$0 = /*<>*/ _i_[2], x = _i_[1]; - /*<>*/ return sorted_merge1(cmp, x, xs$0, y, ys); - }] /*<>*/ ; + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) + /*<>*/ return [0, y, ys]; + var xs$0 = /*<>*/ _i_[2], x = _i_[1]; + /*<>*/ return sorted_merge1(cmp, x, xs$0, y, ys); + }] /*<>*/ ; } function sorted_merge(cmp, xs, ys, _i_){ - /*<>*/ _i_ = caml_call1(xs, 0); - var match = /*<>*/ caml_call1(ys, 0); - /*<>*/ if(_i_){ + /*<>*/ _i_ = caml_call1(xs, 0); + var match = /*<>*/ caml_call1(ys, 0); + /*<>*/ if(_i_){ if(match){ var ys$0 = match[2], y = match[1], xs$0 = _i_[2], x = _i_[1]; - /*<>*/ return sorted_merge1(cmp, x, xs$0, y, ys$0) /*<>*/ ; + /*<>*/ return sorted_merge1(cmp, x, xs$0, y, ys$0) /*<>*/ ; } - var c = /*<>*/ _i_; + var c = /*<>*/ _i_; } else{ - if(! match) /*<>*/ return 0; - /*<>*/ c = match; + if(! match) /*<>*/ return 0; + /*<>*/ c = match; } - /*<>*/ return c; - /*<>*/ } + /*<>*/ return c; + /*<>*/ } function map_fst(xys, _i_){ - /*<>*/ _i_ = caml_call1(xys, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; - var xys$0 = /*<>*/ _i_[2], x = _i_[1][1]; - /*<>*/ return [0, + /*<>*/ _i_ = caml_call1(xys, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; + var xys$0 = /*<>*/ _i_[2], x = _i_[1][1]; + /*<>*/ return [0, x, - function(_i_){ /*<>*/ return map_fst(xys$0, _i_);}] /*<>*/ ; - /*<>*/ } + function(_i_){ /*<>*/ return map_fst(xys$0, _i_);}] /*<>*/ ; + /*<>*/ } function map_snd(xys, _i_){ - /*<>*/ _i_ = caml_call1(xys, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; - var xys$0 = /*<>*/ _i_[2], y = _i_[1][2]; - /*<>*/ return [0, + /*<>*/ _i_ = caml_call1(xys, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; + var xys$0 = /*<>*/ _i_[2], y = _i_[1][2]; + /*<>*/ return [0, y, - function(_i_){ /*<>*/ return map_snd(xys$0, _i_);}] /*<>*/ ; - /*<>*/ } + function(_i_){ /*<>*/ return map_snd(xys$0, _i_);}] /*<>*/ ; + /*<>*/ } function unzip(xys){ - /*<>*/ return [0, - function(_i_){ /*<>*/ return map_fst(xys, _i_);}, - function(_i_){ /*<>*/ return map_snd(xys, _i_);}] /*<>*/ ; - /*<>*/ } + /*<>*/ return [0, + function(_i_){ /*<>*/ return map_fst(xys, _i_);}, + function(_i_){ /*<>*/ return map_snd(xys, _i_);}] /*<>*/ ; + /*<>*/ } function filter_map_find_left_map(f, xs$1, _i_){ - var xs = /*<>*/ xs$1; + var xs = /*<>*/ xs$1; for(;;){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; var - xs$0 = /*<>*/ _i_[2], + xs$0 = /*<>*/ _i_[2], x = _i_[1], - _i_ = /*<>*/ caml_call1(f, x); - /*<>*/ if(0 === _i_[0]) break; + _i_ = /*<>*/ caml_call1(f, x); + /*<>*/ if(0 === _i_[0]) break; xs = xs$0; } - var y = /*<>*/ _i_[1]; - /*<>*/ return [0, + var y = /*<>*/ _i_[1]; + /*<>*/ return [0, y, function(_i_){ - /*<>*/ return filter_map_find_left_map + /*<>*/ return filter_map_find_left_map (f, xs$0, _i_); - }] /*<>*/ ; - /*<>*/ } + }] /*<>*/ ; + /*<>*/ } function filter_map_find_right_map(f, xs$1, _i_){ - var xs = /*<>*/ xs$1; + var xs = /*<>*/ xs$1; for(;;){ - /*<>*/ _i_ = caml_call1(xs, 0); - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ _i_ = caml_call1(xs, 0); + /*<>*/ if(! _i_) /*<>*/ return 0; var - xs$0 = /*<>*/ _i_[2], + xs$0 = /*<>*/ _i_[2], x = _i_[1], - _i_ = /*<>*/ caml_call1(f, x); - /*<>*/ if(0 !== _i_[0]) break; + _i_ = /*<>*/ caml_call1(f, x); + /*<>*/ if(0 !== _i_[0]) break; xs = xs$0; } - var z = /*<>*/ _i_[1]; - /*<>*/ return [0, + var z = /*<>*/ _i_[1]; + /*<>*/ return [0, z, function(_i_){ - /*<>*/ return filter_map_find_right_map + /*<>*/ return filter_map_find_right_map (f, xs$0, _i_); - }] /*<>*/ ; - /*<>*/ } + }] /*<>*/ ; + /*<>*/ } function partition_map(f, xs){ - /*<>*/ return [0, + /*<>*/ return [0, function(_i_){ - /*<>*/ return filter_map_find_left_map(f, xs, _i_); + /*<>*/ return filter_map_find_left_map(f, xs, _i_); }, function(_i_){ - /*<>*/ return filter_map_find_right_map + /*<>*/ return filter_map_find_right_map (f, xs, _i_); - }] /*<>*/ ; - /*<>*/ } + }] /*<>*/ ; + /*<>*/ } function partition(p, xs){ function _h_(x){ - /*<>*/ return 1 - caml_call1(p, x) /*<>*/ ; + /*<>*/ return 1 - caml_call1(p, x) /*<>*/ ; } - /*<>*/ return [0, - function(_i_){ /*<>*/ return filter(p, xs, _i_);}, - function(_i_){ /*<>*/ return filter(_h_, xs, _i_);}] /*<>*/ ; - /*<>*/ } + /*<>*/ return [0, + function(_i_){ /*<>*/ return filter(p, xs, _i_);}, + function(_i_){ /*<>*/ return filter(_h_, xs, _i_);}] /*<>*/ ; + /*<>*/ } function peel(xss){ - /*<>*/ return unzip + /*<>*/ return unzip (function(_h_){ - /*<>*/ return filter_map(uncons, xss, _h_); - }) /*<>*/ ; + /*<>*/ return filter_map(uncons, xss, _h_); + }) /*<>*/ ; } - var _b_ = /*<>*/ [0, "seq.ml", 629, 4]; + var _b_ = /*<>*/ [0, "seq.ml", 631, 4]; function transpose(xss, _h_){ - /*<>*/ _h_ = peel(xss); - var tails = /*<>*/ _h_[2], heads = _h_[1]; - /*<>*/ if(! is_empty(heads)) - /*<>*/ return [0, + /*<>*/ _h_ = peel(xss); + var tails = /*<>*/ _h_[2], heads = _h_[1]; + /*<>*/ if(! is_empty(heads)) + /*<>*/ return [0, heads, function(_h_){ - /*<>*/ return transpose(tails, _h_); - }] /*<>*/ ; - /*<>*/ if(is_empty(tails)) /*<>*/ return 0; - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ return transpose(tails, _h_); + }] /*<>*/ ; + /*<>*/ if(is_empty(tails)) /*<>*/ return 0; + /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _b_], 1); - /*<>*/ } + /*<>*/ } function _a_(remainders, xss, _f_){ - /*<>*/ _f_ = caml_call1(xss, 0); - /*<>*/ if(! _f_) - /*<>*/ return transpose(remainders, 0) /*<>*/ ; + /*<>*/ _f_ = caml_call1(xss, 0); + /*<>*/ if(! _f_) + /*<>*/ return transpose(remainders, 0) /*<>*/ ; var - xss$0 = /*<>*/ _f_[2], + xss$0 = /*<>*/ _f_[2], xs = _f_[1], - _f_ = /*<>*/ caml_call1(xs, 0); - /*<>*/ if(_f_){ + _f_ = /*<>*/ caml_call1(xs, 0); + /*<>*/ if(_f_){ var xs$0 = _f_[2], x = _f_[1], - _f_ = /*<>*/ peel(remainders), - tails = /*<>*/ _f_[2], + _f_ = /*<>*/ peel(remainders), + tails = /*<>*/ _f_[2], heads = _f_[1], _g_ = - /*<>*/ function(param){ + /*<>*/ function(param){ /*<>*/ return [0, xs$0, tails]; }; - /*<>*/ return [0, + /*<>*/ return [0, function(param){ /*<>*/ return [0, x, heads];}, function(_h_){ - /*<>*/ return _a_(_g_, xss$0, _h_); - }] /*<>*/ ; + /*<>*/ return _a_(_g_, xss$0, _h_); + }] /*<>*/ ; } - /*<>*/ _f_ = peel(remainders); - var tails$0 = /*<>*/ _f_[2], heads$0 = _f_[1]; - /*<>*/ return [0, + /*<>*/ _f_ = peel(remainders); + var tails$0 = /*<>*/ _f_[2], heads$0 = _f_[1]; + /*<>*/ return [0, heads$0, function(_g_){ - /*<>*/ return _a_(tails$0, xss$0, _g_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return _a_(tails$0, xss$0, _g_); + }] /*<>*/ ; + /*<>*/ } function map_product(f, xs, ys){ function _d_(x){ function _e_(y){ - /*<>*/ return caml_call2(f, x, y) /*<>*/ ; + /*<>*/ return caml_call2(f, x, y) /*<>*/ ; } - /*<>*/ return function(_f_){ - /*<>*/ return map(_e_, ys, _f_);} /*<>*/ ; - /*<>*/ } - function xss(_e_){ /*<>*/ return map(_d_, xs, _e_);} - function _c_(_d_){ /*<>*/ return _a_(empty, xss, _d_);} - /*<>*/ return function(_d_){return concat(_c_, _d_);}; + /*<>*/ return function(_f_){ + /*<>*/ return map(_e_, ys, _f_);} /*<>*/ ; + /*<>*/ } + function xss(_e_){ /*<>*/ return map(_d_, xs, _e_);} + function _c_(_d_){ /*<>*/ return _a_(empty, xss, _d_);} + /*<>*/ return function(_d_){return concat(_c_, _d_);}; } function product(xs, ys){ - /*<>*/ return map_product + /*<>*/ return map_product (function(x, y){ - /*<>*/ return [0, x, y]; - /*<>*/ }, + /*<>*/ return [0, x, y]; + /*<>*/ }, xs, - ys) /*<>*/ ; + ys) /*<>*/ ; } function of_dispenser(it){ function c(_c_){ - /*<>*/ _c_ = caml_call1(it, 0); - /*<>*/ if(! _c_) /*<>*/ return 0; - var x = /*<>*/ _c_[1]; - /*<>*/ return [0, x, c]; - /*<>*/ } - /*<>*/ return c; - /*<>*/ } + /*<>*/ _c_ = caml_call1(it, 0); + /*<>*/ if(! _c_) /*<>*/ return 0; + var x = /*<>*/ _c_[1]; + /*<>*/ return [0, x, c]; + /*<>*/ } + /*<>*/ return c; + /*<>*/ } function to_dispenser(xs){ - var s = /*<>*/ [0, xs]; - /*<>*/ return function(_c_){ - /*<>*/ _c_ = caml_call1(s[1], 0); - /*<>*/ if(! _c_) /*<>*/ return 0; - var xs = /*<>*/ _c_[2], x = _c_[1]; - /*<>*/ s[1] = xs; - /*<>*/ return [0, x]; /*<>*/ } /*<>*/ ; - /*<>*/ } + var s = /*<>*/ [0, xs]; + /*<>*/ return function(_c_){ + /*<>*/ _c_ = caml_call1(s[1], 0); + /*<>*/ if(! _c_) /*<>*/ return 0; + var xs = /*<>*/ _c_[2], x = _c_[1]; + /*<>*/ s[1] = xs; + /*<>*/ return [0, x]; /*<>*/ } /*<>*/ ; + /*<>*/ } function ints(i, param){ - var _b_ = /*<>*/ i + 1 | 0; - /*<>*/ return [0, + var _b_ = /*<>*/ i + 1 | 0; + /*<>*/ return [0, i, - function(_c_){ /*<>*/ return ints(_b_, _c_);}] /*<>*/ ; - /*<>*/ } + function(_c_){ /*<>*/ return ints(_b_, _c_);}] /*<>*/ ; + /*<>*/ } /*<>*/ runtime.caml_register_global ([0, is_empty, @@ -2801,6 +2889,7 @@ forever, cycle, iterate, + delay, map, mapi, filter, @@ -2840,7 +2929,7 @@ //# unitInfo: Provides: Stdlib__Option //# unitInfo: Requires: Stdlib, Stdlib__Seq -//# shape: Stdlib__Option:[N,F(1)*,F(2)*,F(1),F(2),F(1)*,F(2),F(3),F(2),F(1)*,F(1)*,F(3),F(3),F(2)*,F(1)*,F(1)*->F(1)*] +//# shape: Stdlib__Option:[N,F(1)*,F(2)*,F(1),$0=F(2),F(1)*,F(2),$1=F(2)*,F(3),F(2),F(3),F(2),F(2),F(1)*,F(1)*,F(3),F(3),F(2)*,F(1)*,F(1)*->F(1)*,[$0,$1,F(2),$1]] (function (globalThis){ "use strict"; @@ -2889,60 +2978,94 @@ var v = /*<>*/ o[1]; /*<>*/ return [0, caml_call1(f, v)] /*<>*/ ; } + function product(o0, o1){ + /*<>*/ if(o0 && o1){ + var v1 = o1[1], v0 = o0[1]; + /*<>*/ return [0, [0, v0, v1]]; + } + /*<>*/ return 0; + /*<>*/ } function fold(none, some, param){ - /*<>*/ if(! param) /*<>*/ return none; - var v = /*<>*/ param[1]; - /*<>*/ return caml_call1(some, v) /*<>*/ ; + /*<>*/ if(! param) /*<>*/ return none; + var v = /*<>*/ param[1]; + /*<>*/ return caml_call1(some, v) /*<>*/ ; } function iter(f, param){ - /*<>*/ if(! param) /*<>*/ return 0; - var v = /*<>*/ param[1]; - /*<>*/ return caml_call1(f, v) /*<>*/ ; + /*<>*/ if(! param) /*<>*/ return 0; + var v = /*<>*/ param[1]; + /*<>*/ return caml_call1(f, v) /*<>*/ ; } function is_none(param){ - /*<>*/ return param ? 0 : 1 /*<>*/ ; + /*<>*/ return param ? 0 : 1 /*<>*/ ; } function is_some(param){ - /*<>*/ return param ? 1 : 0 /*<>*/ ; + /*<>*/ return param ? 1 : 0 /*<>*/ ; } + function blend(f, o1, o2){ + /*<>*/ if(o1){ + if(o2){ + var v2 = o2[1], v1 = o1[1]; + /*<>*/ return [0, caml_call2(f, v1, v2)] /*<>*/ ; + } + var x = /*<>*/ o1; + } + else{ + if(! o2) /*<>*/ return 0; + /*<>*/ x = o2; + } + /*<>*/ return x; + /*<>*/ } function equal(eq, o0, o1){ - /*<>*/ if(o0){ + /*<>*/ if(o0){ if(o1){ var v1 = o1[1], v0 = o0[1]; - /*<>*/ return caml_call2(eq, v0, v1) /*<>*/ ; + /*<>*/ return caml_call2(eq, v0, v1) /*<>*/ ; } } - else if(! o1) /*<>*/ return 1; - /*<>*/ return 0; - /*<>*/ } + else if(! o1) /*<>*/ return 1; + /*<>*/ return 0; + /*<>*/ } function compare(cmp, o0, o1){ - /*<>*/ if(! o0) - return o1 ? -1 : 0 /*<>*/ ; - var v0 = /*<>*/ o0[1]; - if(! o1) /*<>*/ return 1; - var v1 = /*<>*/ o1[1]; - /*<>*/ return caml_call2(cmp, v0, v1) /*<>*/ ; + /*<>*/ if(! o0) + return o1 ? -1 : 0 /*<>*/ ; + var v0 = /*<>*/ o0[1]; + if(! o1) /*<>*/ return 1; + var v1 = /*<>*/ o1[1]; + /*<>*/ return caml_call2(cmp, v0, v1) /*<>*/ ; + } + function for_all(p, param){ + /*<>*/ if(! param) /*<>*/ return 1; + var v = /*<>*/ param[1]; + /*<>*/ return caml_call1(p, v) /*<>*/ ; + } + function exists(p, param){ + /*<>*/ if(! param) /*<>*/ return 0; + var v = /*<>*/ param[1]; + /*<>*/ return caml_call1(p, v) /*<>*/ ; } function to_result(none, param){ - /*<>*/ if(! param) - /*<>*/ return [1, none]; - var v = /*<>*/ param[1]; - /*<>*/ return [0, v]; - /*<>*/ } + /*<>*/ if(! param) + /*<>*/ return [1, none]; + var v = /*<>*/ param[1]; + /*<>*/ return [0, v]; + /*<>*/ } function to_list(param){ - /*<>*/ if(! param) /*<>*/ return 0; - var v = /*<>*/ param[1]; - /*<>*/ return [0, v, 0]; - /*<>*/ } + /*<>*/ if(! param) /*<>*/ return 0; + var v = /*<>*/ param[1]; + /*<>*/ return [0, v, 0]; + /*<>*/ } function to_seq(param){ - /*<>*/ if(! param) - /*<>*/ return Stdlib_Seq[20]; + /*<>*/ if(! param) + /*<>*/ return Stdlib_Seq[20]; var - v = /*<>*/ param[1], - _a_ = /*<>*/ Stdlib_Seq[21]; + v = /*<>*/ param[1], + _a_ = /*<>*/ Stdlib_Seq[21]; return function(_b_){ - /*<>*/ return _a_(v, _b_);} /*<>*/ ; - /*<>*/ } + /*<>*/ return _a_(v, _b_);} /*<>*/ ; + /*<>*/ } + function let$(o, f){ + /*<>*/ return map(f, o) /*<>*/ ; + } /*<>*/ runtime.caml_register_global ([0, 0, @@ -2952,15 +3075,20 @@ bind, join, map, + product, fold, iter, + blend, + for_all, + exists, is_none, is_some, equal, compare, to_result, to_list, - to_seq], + to_seq, + [0, bind, product, let$, product]], "Stdlib__Option"); return; } @@ -3692,7 +3820,7 @@ //# unitInfo: Provides: Stdlib__List //# unitInfo: Requires: Stdlib -//# shape: Stdlib__List:[F(1),F(2),F(2),F(1)*,F(2)*,F(1)*,F(1),F(1),F(2),F(2),F(1),F(2),F(2),F(2),$0=F(1),$0,F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(4),F(4),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(2),F(1)*->F(1),$1=F(2),$1,F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),$2=F(2),$2,$2,F(2),F(3),F(1)*->F(1)*,F(1)] +//# shape: Stdlib__List:[F(1),F(2),F(2),F(1)*,F(2)*,F(1)*,F(1),F(1),F(2),F(2),F(1),F(2),F(2),F(2),$0=F(1),$0,F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(4),F(4),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(2),F(1)*->F(1),$1=F(2),$1,F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),$2=F(2),$2,$2,F(2),F(3),F(1)*->F(1)*,F(1)] (function (globalThis){ "use strict"; @@ -3826,45 +3954,45 @@ /*<>*/ return [0, r1, block]; } /*<>*/ } - function flatten(_d_){ - /*<>*/ if(! _d_) /*<>*/ return 0; - var - r = /*<>*/ _d_[2], - l = _d_[1], - _d_ = /*<>*/ flatten(r); - /*<>*/ return Stdlib[37].call(null, l, _d_); - } - function map(f, _d_){ - /*<>*/ if(! _d_) /*<>*/ return 0; - var _c_ = /*<>*/ _d_[2], a1 = _d_[1]; - if(! _c_){ + function flatten(_e_){ + /*<>*/ if(! _e_) /*<>*/ return 0; + var + r = /*<>*/ _e_[2], + l = _e_[1], + _e_ = /*<>*/ flatten(r); + /*<>*/ return Stdlib[37].call(null, l, _e_); + } + function map(f, _e_){ + /*<>*/ if(! _e_) /*<>*/ return 0; + var _d_ = /*<>*/ _e_[2], a1 = _e_[1]; + if(! _d_){ var r1$0 = /*<>*/ caml_call1(f, a1); /*<>*/ return [0, r1$0, 0]; } var - l = /*<>*/ _c_[2], - a2 = _c_[1], + l = /*<>*/ _d_[2], + a2 = _d_[1], r1 = /*<>*/ caml_call1(f, a1), r2 = /*<>*/ caml_call1(f, a2), block = /*<>*/ [0, r2, 24029], dst = /*<>*/ block, offset = 1, - _c_ = l; + _d_ = l; for(;;){ - /*<>*/ if(_c_){ - _d_ = _c_[2]; - var a1$0 = _c_[1]; - if(_d_){ + /*<>*/ if(_d_){ + _e_ = _d_[2]; + var a1$0 = _d_[1]; + if(_e_){ var - l$0 = _d_[2], - a2$0 = _d_[1], + l$0 = _e_[2], + a2$0 = _e_[1], r1$1 = /*<>*/ caml_call1(f, a1$0), r2$0 = /*<>*/ caml_call1(f, a2$0), dst$0 = /*<>*/ [0, r2$0, 24029]; dst[offset + 1] = [0, r1$1, dst$0]; dst = dst$0; offset = 1; - _c_ = l$0; + _d_ = l$0; continue; } var r1$2 = /*<>*/ caml_call1(f, a1$0); @@ -3878,26 +4006,26 @@ function mapi(f, l$1){ /*<>*/ if(! l$1) /*<>*/ return 0; var - _c_ = /*<>*/ l$1[2], + _d_ = /*<>*/ l$1[2], a1 = l$1[1], i$1 = /*<>*/ 0; - /*<>*/ if(! _c_){ + /*<>*/ if(! _d_){ var r1$0 = /*<>*/ caml_call2(f, i$1, a1); /*<>*/ return [0, r1$0, 0]; } var - l = /*<>*/ _c_[2], - a2 = _c_[1], + l = /*<>*/ _d_[2], + a2 = _d_[1], r1 = /*<>*/ caml_call2(f, i$1, a1), r2 = /*<>*/ caml_call2(f, 1, a2), block = /*<>*/ [0, r2, 24029], dst = /*<>*/ block, offset = 1, i = 2, - _c_ = l; + _d_ = l; for(;;){ - /*<>*/ if(_c_){ - var match = _c_[2], a1$0 = _c_[1]; + /*<>*/ if(_d_){ + var match = _d_[2], a1$0 = _d_[1]; if(match){ var l$0 = match[2], @@ -3910,7 +4038,7 @@ dst = dst$0; offset = 1; i = i$0; - _c_ = l$0; + _d_ = l$0; continue; } var r1$2 = /*<>*/ caml_call2(f, i, a1$0); @@ -3933,12 +4061,12 @@ param = l$0; } /*<>*/ } - function iter(f, _c_){ + function iter(f, _d_){ /*<>*/ for(;;){ - if(! _c_) /*<>*/ return 0; - var l = /*<>*/ _c_[2], a = _c_[1]; + if(! _d_) /*<>*/ return 0; + var l = /*<>*/ _d_[2], a = _d_[1]; /*<>*/ caml_call1(f, a); - /*<>*/ _c_ = l; + /*<>*/ _d_ = l; } /*<>*/ } function iteri(f, l$0){ @@ -3973,17 +4101,17 @@ function map2(f, l1, l2){ var cst_List_map2 = /*<>*/ "List.map2"; /*<>*/ if(l1){ - var _b_ = l1[2], a1 = l1[1]; - if(_b_){ + var _c_ = l1[2], a1 = l1[1]; + if(_c_){ if(l2){ - var _c_ = l2[2]; - if(_c_){ + var _d_ = l2[2]; + if(_d_){ var - l2$0 = _c_[2], - b2 = _c_[1], + l2$0 = _d_[2], + b2 = _d_[1], b1 = l2[1], - l1$0 = _b_[2], - a2 = _b_[1], + l1$0 = _c_[2], + a2 = _c_[1], r1 = /*<>*/ caml_call2(f, a1, b1), r2 = /*<>*/ caml_call2(f, a2, b2), block = /*<>*/ [0, r2, 24029], @@ -3995,18 +4123,18 @@ a: { /*<>*/ if(l1$1){ - _b_ = l1$1[2]; + _c_ = l1$1[2]; var a1$0 = l1$1[1]; - if(_b_){ + if(_c_){ if(l2$1){ - _c_ = l2$1[2]; - if(_c_){ + _d_ = l2$1[2]; + if(_d_){ var - l2$2 = _c_[2], - b2$0 = _c_[1], + l2$2 = _d_[2], + b2$0 = _d_[1], b1$1 = l2$1[1], - l1$2 = _b_[2], - a2$0 = _b_[1], + l1$2 = _c_[2], + a2$0 = _c_[1], r1$1 = /*<>*/ caml_call2(f, a1$0, b1$1), r2$0 = /*<>*/ caml_call2(f, a2$0, b2$0), dst$0 = /*<>*/ [0, r2$0, 24029]; @@ -4121,26 +4249,26 @@ else if(! l2) /*<>*/ return accu; /*<>*/ return Stdlib[1].call(null, "List.fold_right2") /*<>*/ ; } - function for_all(p, _b_){ + function for_all(p, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 1; + if(! _c_) /*<>*/ return 1; var - l = /*<>*/ _b_[2], - a = _b_[1], - _b_ = /*<>*/ caml_call1(p, a); - /*<>*/ if(! _b_) return _b_; - _b_ = l; + l = /*<>*/ _c_[2], + a = _c_[1], + _c_ = /*<>*/ caml_call1(p, a); + /*<>*/ if(! _c_) return _c_; + _c_ = l; } /*<>*/ } - function exists(p, _b_){ + function exists(p, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - a = _b_[1], - _b_ = /*<>*/ caml_call1(p, a); - /*<>*/ if(_b_) return _b_; - _b_ = l; + l = /*<>*/ _c_[2], + a = _c_[1], + _c_ = /*<>*/ caml_call1(p, a); + /*<>*/ if(_c_) return _c_; + _c_ = l; } /*<>*/ } function for_all2(p, l1$1, l2$1){ @@ -4153,8 +4281,8 @@ a2 = l2[1], l1$0 = l1[2], a1 = l1[1], - _b_ = /*<>*/ caml_call2(p, a1, a2); - /*<>*/ if(! _b_) return _b_; + _c_ = /*<>*/ caml_call2(p, a1, a2); + /*<>*/ if(! _c_) return _c_; l1 = l1$0; l2 = l2$0; continue; @@ -4174,8 +4302,8 @@ a2 = l2[1], l1$0 = l1[2], a1 = l1[1], - _b_ = /*<>*/ caml_call2(p, a1, a2); - /*<>*/ if(_b_) return _b_; + _c_ = /*<>*/ caml_call2(p, a1, a2); + /*<>*/ if(_c_) return _c_; l1 = l1$0; l2 = l2$0; continue; @@ -4185,101 +4313,101 @@ /*<>*/ return Stdlib[1].call(null, "List.exists2") /*<>*/ ; } } - function mem(x, _b_){ + function mem(x, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - a = _b_[1], - _b_ = /*<>*/ 0 === caml_compare(a, x) ? 1 : 0; - /*<>*/ if(_b_) return _b_; - _b_ = l; + l = /*<>*/ _c_[2], + a = _c_[1], + _c_ = /*<>*/ 0 === caml_compare(a, x) ? 1 : 0; + /*<>*/ if(_c_) return _c_; + _c_ = l; } /*<>*/ } - function memq(x, _b_){ + function memq(x, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - a = _b_[1], - _b_ = /*<>*/ a === x ? 1 : 0; - if(_b_) return _b_; - _b_ = l; + l = /*<>*/ _c_[2], + a = _c_[1], + _c_ = /*<>*/ a === x ? 1 : 0; + if(_c_) return _c_; + _c_ = l; } /*<>*/ } - function assoc(x, _b_){ + function assoc(x, _c_){ /*<>*/ for(;;){ - if(! _b_) + if(! _c_) /*<>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1); var - l = /*<>*/ _b_[2], - _b_ = _b_[1], - b = _b_[2], - a = _b_[1]; + l = /*<>*/ _c_[2], + _c_ = _c_[1], + b = _c_[2], + a = _c_[1]; /*<>*/ if(0 === caml_compare(a, x)) /*<>*/ return b; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } /*<>*/ } - function assoc_opt(x, _b_){ + function assoc_opt(x, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - _b_ = _b_[1], - b = _b_[2], - a = _b_[1]; + l = /*<>*/ _c_[2], + _c_ = _c_[1], + b = _c_[2], + a = _c_[1]; /*<>*/ if(0 === caml_compare(a, x)) /*<>*/ return [0, b]; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } /*<>*/ } - function assq(x, _b_){ + function assq(x, _c_){ /*<>*/ for(;;){ - if(! _b_) + if(! _c_) /*<>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1); var - l = /*<>*/ _b_[2], - _b_ = _b_[1], - b = _b_[2], - a = _b_[1]; + l = /*<>*/ _c_[2], + _c_ = _c_[1], + b = _c_[2], + a = _c_[1]; /*<>*/ if(a === x) /*<>*/ return b; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } /*<>*/ } - function assq_opt(x, _b_){ + function assq_opt(x, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - _b_ = _b_[1], - b = _b_[2], - a = _b_[1]; + l = /*<>*/ _c_[2], + _c_ = _c_[1], + b = _c_[2], + a = _c_[1]; /*<>*/ if(a === x) /*<>*/ return [0, b]; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } /*<>*/ } - function mem_assoc(x, _b_){ + function mem_assoc(x, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - a = _b_[1][1], - _b_ = /*<>*/ 0 === caml_compare(a, x) ? 1 : 0; - /*<>*/ if(_b_) return _b_; - _b_ = l; + l = /*<>*/ _c_[2], + a = _c_[1][1], + _c_ = /*<>*/ 0 === caml_compare(a, x) ? 1 : 0; + /*<>*/ if(_c_) return _c_; + _c_ = l; } /*<>*/ } - function mem_assq(x, _b_){ + function mem_assq(x, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - a = _b_[1][1], - _b_ = /*<>*/ a === x ? 1 : 0; - if(_b_) return _b_; - _b_ = l; + l = /*<>*/ _c_[2], + a = _c_[1][1], + _c_ = /*<>*/ a === x ? 1 : 0; + if(_c_) return _c_; + _c_ = l; } /*<>*/ } function remove_assoc(x, param){ @@ -4296,120 +4424,120 @@ ? l : [0, pair, /*<>*/ remove_assq(x, l)] /*<>*/ ; } - function find(p, _b_){ + function find(p, _c_){ /*<>*/ for(;;){ - if(! _b_) + if(! _c_) /*<>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1); - var l = /*<>*/ _b_[2], x = _b_[1]; + var l = /*<>*/ _c_[2], x = _c_[1]; /*<>*/ if(caml_call1(p, x)) /*<>*/ return x; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } /*<>*/ } - function find_opt(p, _b_){ + function find_opt(p, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; - var l = /*<>*/ _b_[2], x = _b_[1]; + if(! _c_) /*<>*/ return 0; + var l = /*<>*/ _c_[2], x = _c_[1]; /*<>*/ if(caml_call1(p, x)) /*<>*/ return [0, x]; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } /*<>*/ } function find_index(p){ - /*<>*/ return function(_b_){ + /*<>*/ return function(_c_){ var i = /*<>*/ 0; for(;;){ - /*<>*/ if(! _b_) /*<>*/ return 0; - var l = /*<>*/ _b_[2], a = _b_[1]; + /*<>*/ if(! _c_) /*<>*/ return 0; + var l = /*<>*/ _c_[2], a = _c_[1]; /*<>*/ if(caml_call1(p, a)) /*<>*/ return [0, i]; var i$0 = /*<>*/ i + 1 | 0; i = i$0; - _b_ = l; + _c_ = l; }} /*<>*/ ; /*<>*/ } - function find_map(f, _b_){ + function find_map(f, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - x = _b_[1], + l = /*<>*/ _c_[2], + x = _c_[1], result = /*<>*/ caml_call1(f, x); /*<>*/ if(result) /*<>*/ return result; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } /*<>*/ } function find_mapi(f){ - /*<>*/ return function(_b_){ + /*<>*/ return function(_c_){ var i = /*<>*/ 0; for(;;){ - /*<>*/ if(! _b_) /*<>*/ return 0; + /*<>*/ if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - x = _b_[1], + l = /*<>*/ _c_[2], + x = _c_[1], result = /*<>*/ caml_call2(f, i, x); /*<>*/ if(result) /*<>*/ return result; var i$0 = /*<>*/ i + 1 | 0; i = i$0; - _b_ = l; + _c_ = l; }} /*<>*/ ; /*<>*/ } - function find_all(p, _b_){ + function find_all(p, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; - var l = /*<>*/ _b_[2], x = _b_[1]; + if(! _c_) /*<>*/ return 0; + var l = /*<>*/ _c_[2], x = _c_[1]; /*<>*/ if(caml_call1(p, x)) break; - /*<>*/ _b_ = l; + /*<>*/ _c_ = l; } var block = /*<>*/ [0, x, 24029], dst = /*<>*/ block, offset = 1, - _b_ = l; + _c_ = l; for(;;){ - /*<>*/ if(! _b_){ + /*<>*/ if(! _c_){ /*<>*/ dst[offset + 1] = 0; /*<>*/ return block; } - var l$0 = /*<>*/ _b_[2], x$0 = _b_[1]; + var l$0 = /*<>*/ _c_[2], x$0 = _c_[1]; /*<>*/ if(caml_call1(p, x$0)){ var dst$0 = /*<>*/ [0, x$0, 24029]; dst[offset + 1] = dst$0; dst = dst$0; offset = 1; - _b_ = l$0; + _c_ = l$0; } else - /*<>*/ _b_ = l$0; + /*<>*/ _c_ = l$0; } /*<>*/ } function filteri(p, l$1){ - var i = /*<>*/ 0, _b_ = l$1; + var i = /*<>*/ 0, _c_ = l$1; for(;;){ - /*<>*/ if(! _b_) /*<>*/ return 0; + /*<>*/ if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - x = _b_[1], + l = /*<>*/ _c_[2], + x = _c_[1], i$0 = /*<>*/ i + 1 | 0; /*<>*/ if(caml_call2(p, i, x)) break; /*<>*/ i = i$0; - _b_ = l; + _c_ = l; } var block = /*<>*/ [0, x, 24029], dst = /*<>*/ block, offset = 1, i$1 = i$0, - _b_ = l; + _c_ = l; for(;;){ - /*<>*/ if(! _b_){ + /*<>*/ if(! _c_){ /*<>*/ dst[offset + 1] = 0; /*<>*/ return block; } var - l$0 = /*<>*/ _b_[2], - x$0 = _b_[1], + l$0 = /*<>*/ _c_[2], + x$0 = _c_[1], i$2 = /*<>*/ i$1 + 1 | 0; /*<>*/ if(caml_call2(p, i$1, x$0)){ var dst$0 = /*<>*/ [0, x$0, 24029]; @@ -4417,112 +4545,153 @@ dst = dst$0; offset = 1; i$1 = i$2; - _b_ = l$0; + _c_ = l$0; } - else{ /*<>*/ i$1 = i$2; _b_ = l$0;} + else{ /*<>*/ i$1 = i$2; _c_ = l$0;} } /*<>*/ } - function filter_map(f, _b_){ + function filter_map(f, _c_){ /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + if(! _c_) /*<>*/ return 0; var - l = /*<>*/ _b_[2], - x = _b_[1], - _b_ = /*<>*/ caml_call1(f, x); - /*<>*/ if(_b_) break; - _b_ = l; + l = /*<>*/ _c_[2], + x = _c_[1], + _c_ = /*<>*/ caml_call1(f, x); + /*<>*/ if(_c_) break; + _c_ = l; } var - v = /*<>*/ _b_[1], + v = /*<>*/ _c_[1], block = /*<>*/ [0, v, 24029], dst = /*<>*/ block, offset = 1, - _b_ = l; + _c_ = l; for(;;){ - /*<>*/ if(! _b_){ + /*<>*/ if(! _c_){ /*<>*/ dst[offset + 1] = 0; /*<>*/ return block; } var - l$0 = /*<>*/ _b_[2], - x$0 = _b_[1], - _b_ = /*<>*/ caml_call1(f, x$0); - /*<>*/ if(_b_){ - var v$0 = _b_[1], dst$0 = /*<>*/ [0, v$0, 24029]; + l$0 = /*<>*/ _c_[2], + x$0 = _c_[1], + _c_ = /*<>*/ caml_call1(f, x$0); + /*<>*/ if(_c_){ + var v$0 = _c_[1], dst$0 = /*<>*/ [0, v$0, 24029]; dst[offset + 1] = dst$0; dst = dst$0; offset = 1; - _b_ = l$0; + _c_ = l$0; } else - /*<>*/ _b_ = l$0; + /*<>*/ _c_ = l$0; } /*<>*/ } - function concat_map(f, _b_){ - /*<>*/ for(;;){ - if(! _b_) /*<>*/ return 0; + function filter_mapi(f, l$1){ + var i = /*<>*/ 0, _c_ = l$1; + for(;;){ + /*<>*/ if(! _c_) /*<>*/ return 0; + var + l = /*<>*/ _c_[2], + x = _c_[1], + i$0 = /*<>*/ i + 1 | 0, + _c_ = /*<>*/ caml_call2(f, i, x); + /*<>*/ if(_c_) break; + i = i$0; + _c_ = l; + } + var + v = /*<>*/ _c_[1], + block = /*<>*/ [0, v, 24029], + dst = /*<>*/ block, + offset = 1, + i$1 = i$0, + _c_ = l; + for(;;){ + /*<>*/ if(! _c_){ + /*<>*/ dst[offset + 1] = 0; + /*<>*/ return block; + } + var + l$0 = /*<>*/ _c_[2], + x$0 = _c_[1], + i$2 = /*<>*/ i$1 + 1 | 0, + _c_ = /*<>*/ caml_call2(f, i$1, x$0); + /*<>*/ if(_c_){ + var v$0 = _c_[1], dst$0 = /*<>*/ [0, v$0, 24029]; + dst[offset + 1] = dst$0; + dst = dst$0; + offset = 1; + i$1 = i$2; + _c_ = l$0; + } + else{ /*<>*/ i$1 = i$2; _c_ = l$0;} + } + /*<>*/ } + function concat_map(f, _c_){ + /*<>*/ for(;;){ + if(! _c_) /*<>*/ return 0; var - xs = /*<>*/ _b_[2], - x = _b_[1], - ys = /*<>*/ caml_call1(f, x); - /*<>*/ if(ys) break; - _b_ = xs; + xs = /*<>*/ _c_[2], + x = _c_[1], + ys = /*<>*/ caml_call1(f, x); + /*<>*/ if(ys) break; + _c_ = xs; } var - ys$1 = /*<>*/ ys[2], + ys$1 = /*<>*/ ys[2], y = ys[1], - xs$1 = /*<>*/ xs, + xs$1 = /*<>*/ xs, ys$4 = ys$1, offset$0 = 1, - block = /*<>*/ [0, y, 24029], - dst$1 = /*<>*/ block; + block = /*<>*/ [0, y, 24029], + dst$1 = /*<>*/ block; for(;;){ - var dst = /*<>*/ dst$1, offset = offset$0, ys$2 = ys$4; + var dst = /*<>*/ dst$1, offset = offset$0, ys$2 = ys$4; for(;;){ if(! ys$2){ - /*<>*/ if(xs$1){ + /*<>*/ if(xs$1){ var xs$0 = xs$1[2], x$0 = xs$1[1], - ys$0 = /*<>*/ caml_call1(f, x$0); - /*<>*/ xs$1 = xs$0; + ys$0 = /*<>*/ caml_call1(f, x$0); + /*<>*/ xs$1 = xs$0; ys$4 = ys$0; offset$0 = offset; dst$1 = dst; break; } - /*<>*/ dst[offset + 1] = 0; - /*<>*/ return block; + /*<>*/ dst[offset + 1] = 0; + /*<>*/ return block; } var - ys$3 = /*<>*/ ys$2[2], + ys$3 = /*<>*/ ys$2[2], y$0 = ys$2[1], - dst$0 = /*<>*/ [0, y$0, 24029]; + dst$0 = /*<>*/ [0, y$0, 24029]; dst[offset + 1] = dst$0; dst = dst$0; offset = 1; ys$2 = ys$3; } } - /*<>*/ } + /*<>*/ } function take(n, l){ - /*<>*/ if(0 >= n) /*<>*/ return 0; - /*<>*/ if(0 !== n && l){ + /*<>*/ if(0 >= n) /*<>*/ return 0; + /*<>*/ if(0 !== n && l){ var l$0 = l[2], x = l[1], - n$0 = /*<>*/ n - 1 | 0, + n$0 = /*<>*/ n - 1 | 0, block = [0, x, 24029], - dst = /*<>*/ block, + dst = /*<>*/ block, offset = 1, n$1 = n$0, l$1 = l$0; for(;;){ - /*<>*/ if(0 !== n$1 && l$1){ + /*<>*/ if(0 !== n$1 && l$1){ var l$2 = l$1[2], x$0 = l$1[1], - dst$0 = /*<>*/ [0, x$0, 24029]; + dst$0 = /*<>*/ [0, x$0, 24029]; dst[offset + 1] = dst$0; var n$2 = n$1 - 1 | 0; dst = dst$0; @@ -4531,42 +4700,42 @@ l$1 = l$2; continue; } - /*<>*/ dst[offset + 1] = 0; - /*<>*/ return block; + /*<>*/ dst[offset + 1] = 0; + /*<>*/ return block; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function drop(n, rest){ - /*<>*/ if(0 >= n) /*<>*/ return rest; - var i = /*<>*/ 0, rest$0 = rest; + /*<>*/ if(0 >= n) /*<>*/ return rest; + var i = /*<>*/ 0, rest$0 = rest; for(;;){ - /*<>*/ if(rest$0){ + /*<>*/ if(rest$0){ var rest$1 = rest$0[2]; - /*<>*/ if(i < n){ - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i < n){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; rest$0 = rest$1; continue; } } - /*<>*/ return rest$0; + /*<>*/ return rest$0; } - /*<>*/ } + /*<>*/ } function take_while(p, rest){ - /*<>*/ if(rest){ + /*<>*/ if(rest){ var rest$0 = rest[2], x = rest[1]; - /*<>*/ if(caml_call1(p, x)){ + /*<>*/ if(caml_call1(p, x)){ var - block = /*<>*/ [0, x, 24029], - dst = /*<>*/ block, + block = /*<>*/ [0, x, 24029], + dst = /*<>*/ block, offset = 1, rest$1 = rest$0; for(;;){ - /*<>*/ if(rest$1){ + /*<>*/ if(rest$1){ var rest$2 = rest$1[2], x$0 = rest$1[1]; - /*<>*/ if(caml_call1(p, x$0)){ - var dst$0 = /*<>*/ [0, x$0, 24029]; + /*<>*/ if(caml_call1(p, x$0)){ + var dst$0 = /*<>*/ [0, x$0, 24029]; dst[offset + 1] = dst$0; dst = dst$0; offset = 1; @@ -4574,452 +4743,466 @@ continue; } } - /*<>*/ dst[offset + 1] = 0; - /*<>*/ return block; + /*<>*/ dst[offset + 1] = 0; + /*<>*/ return block; } } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function drop_while(p, rest$1){ - var rest = /*<>*/ rest$1; + var rest = /*<>*/ rest$1; for(;;){ if(rest){ var rest$0 = rest[2], x = rest[1]; - /*<>*/ if(caml_call1(p, x)){ - /*<>*/ rest = rest$0; + /*<>*/ if(caml_call1(p, x)){ + /*<>*/ rest = rest$0; continue; } } - /*<>*/ return rest; + /*<>*/ return rest; } - /*<>*/ } + /*<>*/ } function fold_left_map(f, accu, l){ - var accu$0 = /*<>*/ accu, l_accu = 0, _b_ = l; + var accu$0 = /*<>*/ accu, l_accu = 0, _c_ = l; for(;;){ - /*<>*/ if(! _b_) - /*<>*/ return [0, accu$0, rev(l_accu)] /*<>*/ ; + /*<>*/ if(! _c_) + /*<>*/ return [0, accu$0, rev(l_accu)] /*<>*/ ; var - l$0 = /*<>*/ _b_[2], - x = _b_[1], - _b_ = /*<>*/ caml_call2(f, accu$0, x), - x$0 = /*<>*/ _b_[2], - accu$1 = _b_[1], - l_accu$0 = /*<>*/ [0, x$0, l_accu]; + l$0 = /*<>*/ _c_[2], + x = _c_[1], + _c_ = /*<>*/ caml_call2(f, accu$0, x), + x$0 = /*<>*/ _c_[2], + accu$1 = _c_[1], + l_accu$0 = /*<>*/ [0, x$0, l_accu]; accu$0 = accu$1; l_accu = l_accu$0; - _b_ = l$0; + _c_ = l$0; } - /*<>*/ } + /*<>*/ } function partition(p, l){ - var yes = /*<>*/ 0, no = 0, _b_ = l; + var yes = /*<>*/ 0, no = 0, _c_ = l; for(;;){ - /*<>*/ if(! _b_){ - /*<>*/ _b_ = rev(no); - /*<>*/ return [0, rev(yes), _b_] /*<>*/ ; + /*<>*/ if(! _c_){ + /*<>*/ _c_ = rev(no); + /*<>*/ return [0, rev(yes), _c_] /*<>*/ ; } - var l$0 = /*<>*/ _b_[2], x = _b_[1]; - /*<>*/ if(caml_call1(p, x)){ - var yes$0 = /*<>*/ [0, x, yes]; + var l$0 = /*<>*/ _c_[2], x = _c_[1]; + /*<>*/ if(caml_call1(p, x)){ + var yes$0 = /*<>*/ [0, x, yes]; yes = yes$0; - _b_ = l$0; + _c_ = l$0; } - else{var no$0 = /*<>*/ [0, x, no]; no = no$0; _b_ = l$0; + else{var no$0 = /*<>*/ [0, x, no]; no = no$0; _c_ = l$0; } } - /*<>*/ } + /*<>*/ } function partition_map(p, l){ - var left = /*<>*/ 0, right = 0, _b_ = l; + var left = /*<>*/ 0, right = 0, _c_ = l; for(;;){ - /*<>*/ if(! _b_){ - /*<>*/ _b_ = rev(right); - /*<>*/ return [0, rev(left), _b_] /*<>*/ ; + /*<>*/ if(! _c_){ + /*<>*/ _c_ = rev(right); + /*<>*/ return [0, rev(left), _c_] /*<>*/ ; } var - l$0 = /*<>*/ _b_[2], - x = _b_[1], - _b_ = /*<>*/ caml_call1(p, x); - /*<>*/ if(0 === _b_[0]){ - var v = _b_[1], left$0 = /*<>*/ [0, v, left]; + l$0 = /*<>*/ _c_[2], + x = _c_[1], + _c_ = /*<>*/ caml_call1(p, x); + /*<>*/ if(0 === _c_[0]){ + var v = _c_[1], left$0 = /*<>*/ [0, v, left]; left = left$0; - _b_ = l$0; + _c_ = l$0; } else{ var - v$0 = /*<>*/ _b_[1], - right$0 = /*<>*/ [0, v$0, right]; + v$0 = /*<>*/ _c_[1], + right$0 = /*<>*/ [0, v$0, right]; right = right$0; - _b_ = l$0; + _c_ = l$0; } } - /*<>*/ } + /*<>*/ } var _a_ = /*<>*/ [0, 0, 0]; - function split(_b_){ - /*<>*/ if(! _b_) /*<>*/ return _a_; - var - l = /*<>*/ _b_[2], - _b_ = _b_[1], - y = _b_[2], - x = _b_[1], - _b_ = /*<>*/ split(l), - ry = /*<>*/ _b_[2], - rx = _b_[1]; - /*<>*/ return [0, [0, x, rx], [0, y, ry]]; - /*<>*/ } + function split(_c_){ + /*<>*/ if(! _c_) /*<>*/ return _a_; + var + l = /*<>*/ _c_[2], + _c_ = _c_[1], + y = _c_[2], + x = _c_[1], + _c_ = /*<>*/ split(l), + ry = /*<>*/ _c_[2], + rx = _c_[1]; + /*<>*/ return [0, [0, x, rx], [0, y, ry]]; + /*<>*/ } + var _b_ = /*<>*/ [0, 0, 0]; + function split_map(f, _c_){ + /*<>*/ if(! _c_) /*<>*/ return _b_; + var + l = /*<>*/ _c_[2], + z = _c_[1], + _c_ = /*<>*/ caml_call1(f, z), + y = /*<>*/ _c_[2], + x = _c_[1], + _c_ = /*<>*/ split_map(f, l), + ry = /*<>*/ _c_[2], + rx = _c_[1]; + /*<>*/ return [0, [0, x, rx], [0, y, ry]]; + /*<>*/ } function combine(l1, l2){ - /*<>*/ if(l1){ + /*<>*/ if(l1){ if(l2){ var l2$0 = l2[2], a2 = l2[1], l1$0 = l1[2], a1 = l1[1]; - /*<>*/ return [0, [0, a1, a2], combine(l1$0, l2$0)] /*<>*/ ; + /*<>*/ return [0, [0, a1, a2], combine(l1$0, l2$0)] /*<>*/ ; } } - else if(! l2) /*<>*/ return 0; - /*<>*/ return Stdlib[1].call(null, "List.combine") /*<>*/ ; + else if(! l2) /*<>*/ return 0; + /*<>*/ return Stdlib[1].call(null, "List.combine") /*<>*/ ; } function merge(cmp, l1, l2){ - /*<>*/ if(! l1) /*<>*/ return l2; - /*<>*/ if(! l2) /*<>*/ return l1; - var t2 = /*<>*/ l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1]; - /*<>*/ return 0 < caml_call2(cmp, h1, h2) - ? [0, h2, /*<>*/ merge(cmp, l1, t2)] - : [0, h1, /*<>*/ merge(cmp, t1, l2)] /*<>*/ ; + /*<>*/ if(! l1) /*<>*/ return l2; + /*<>*/ if(! l2) /*<>*/ return l1; + var t2 = /*<>*/ l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1]; + /*<>*/ return 0 < caml_call2(cmp, h1, h2) + ? [0, h2, /*<>*/ merge(cmp, l1, t2)] + : [0, h1, /*<>*/ merge(cmp, t1, l2)] /*<>*/ ; } function stable_sort(cmp, l){ function sort(n, l){ - /*<>*/ if(2 === n){ + /*<>*/ if(2 === n){ if(l){ - var _a_ = l[2]; - if(_a_){ + var _b_ = l[2]; + if(_b_){ var - tl = _a_[2], - x2 = _a_[1], + tl = _b_[2], + x2 = _b_[1], x1 = l[1], s = - /*<>*/ 0 < caml_call2(cmp, x1, x2) + /*<>*/ 0 < caml_call2(cmp, x1, x2) ? [0, x2, [0, x1, 0]] : [0, x1, [0, x2, 0]]; - /*<>*/ return [0, s, tl]; + /*<>*/ return [0, s, tl]; } } } else if(3 === n && l){ - /*<>*/ _a_ = l[2]; - if(_a_){ - var match = _a_[2]; + /*<>*/ _b_ = l[2]; + if(_b_){ + var match = _b_[2]; if(match){ var tl$1 = match[2], x3 = match[1], - x2$0 = _a_[1], + x2$0 = _b_[1], x1$0 = l[1], s$0 = - /*<>*/ 0 < caml_call2(cmp, x1$0, x2$0) + /*<>*/ 0 < caml_call2(cmp, x1$0, x2$0) ? 0 - < /*<>*/ caml_call2(cmp, x1$0, x3) + < /*<>*/ caml_call2(cmp, x1$0, x3) ? 0 - < /*<>*/ caml_call2(cmp, x2$0, x3) + < /*<>*/ caml_call2(cmp, x2$0, x3) ? [0, x3, [0, x2$0, [0, x1$0, 0]]] : [0, x2$0, [0, x3, [0, x1$0, 0]]] : [0, x2$0, [0, x1$0, [0, x3, 0]]] : 0 - < /*<>*/ caml_call2(cmp, x2$0, x3) + < /*<>*/ caml_call2(cmp, x2$0, x3) ? 0 - < /*<>*/ caml_call2(cmp, x1$0, x3) + < /*<>*/ caml_call2(cmp, x1$0, x3) ? [0, x3, [0, x1$0, [0, x2$0, 0]]] : [0, x1$0, [0, x3, [0, x2$0, 0]]] : [0, x1$0, [0, x2$0, [0, x3, 0]]]; - /*<>*/ return [0, s$0, tl$1]; + /*<>*/ return [0, s$0, tl$1]; } } } var - n1 = /*<>*/ n >> 1, - n2 = /*<>*/ n - n1 | 0, - _a_ = /*<>*/ rev_sort(n1, l), - l2$0 = /*<>*/ _a_[2], - s1 = _a_[1], - _a_ = /*<>*/ rev_sort(n2, l2$0), - tl$0 = /*<>*/ _a_[2], - s2 = _a_[1], - l1 = /*<>*/ s1, + n1 = /*<>*/ n >> 1, + n2 = /*<>*/ n - n1 | 0, + _b_ = /*<>*/ rev_sort(n1, l), + l2$0 = /*<>*/ _b_[2], + s1 = _b_[1], + _b_ = /*<>*/ rev_sort(n2, l2$0), + tl$0 = /*<>*/ _b_[2], + s2 = _b_[1], + l1 = /*<>*/ s1, l2 = s2, accu = 0; for(;;){ - /*<>*/ if(l1){ + /*<>*/ if(l1){ if(l2){ var t2 = l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1]; - /*<>*/ if(0 < caml_call2(cmp, h1, h2)){ - var accu$0 = /*<>*/ [0, h1, accu]; + /*<>*/ if(0 < caml_call2(cmp, h1, h2)){ + var accu$0 = /*<>*/ [0, h1, accu]; l1 = t1; accu = accu$0; continue; } - var accu$1 = /*<>*/ [0, h2, accu]; + var accu$1 = /*<>*/ [0, h2, accu]; l2 = t2; accu = accu$1; continue; } - /*<>*/ _a_ = rev_append(l1, accu); + /*<>*/ _b_ = rev_append(l1, accu); } else - /*<>*/ _a_ = rev_append(l2, accu); - /*<>*/ return [0, _a_, tl$0]; + /*<>*/ _b_ = rev_append(l2, accu); + /*<>*/ return [0, _b_, tl$0]; } - /*<>*/ } + /*<>*/ } function rev_sort(n, l){ - /*<>*/ if(2 === n){ + /*<>*/ if(2 === n){ if(l){ - var _a_ = l[2]; - if(_a_){ + var _b_ = l[2]; + if(_b_){ var - tl = _a_[2], - x2 = _a_[1], + tl = _b_[2], + x2 = _b_[1], x1 = l[1], s = - /*<>*/ 0 < caml_call2(cmp, x1, x2) + /*<>*/ 0 < caml_call2(cmp, x1, x2) ? [0, x1, [0, x2, 0]] : [0, x2, [0, x1, 0]]; - /*<>*/ return [0, s, tl]; + /*<>*/ return [0, s, tl]; } } } else if(3 === n && l){ - /*<>*/ _a_ = l[2]; - if(_a_){ - var match = _a_[2]; + /*<>*/ _b_ = l[2]; + if(_b_){ + var match = _b_[2]; if(match){ var tl$1 = match[2], x3 = match[1], - x2$0 = _a_[1], + x2$0 = _b_[1], x1$0 = l[1], s$0 = - /*<>*/ 0 < caml_call2(cmp, x1$0, x2$0) + /*<>*/ 0 < caml_call2(cmp, x1$0, x2$0) ? 0 - < /*<>*/ caml_call2(cmp, x2$0, x3) + < /*<>*/ caml_call2(cmp, x2$0, x3) ? [0, x1$0, [0, x2$0, [0, x3, 0]]] : 0 - < /*<>*/ caml_call2(cmp, x1$0, x3) + < /*<>*/ caml_call2(cmp, x1$0, x3) ? [0, x1$0, [0, x3, [0, x2$0, 0]]] : [0, x3, [0, x1$0, [0, x2$0, 0]]] : 0 - < /*<>*/ caml_call2(cmp, x1$0, x3) + < /*<>*/ caml_call2(cmp, x1$0, x3) ? [0, x2$0, [0, x1$0, [0, x3, 0]]] : 0 - < /*<>*/ caml_call2(cmp, x2$0, x3) + < /*<>*/ caml_call2(cmp, x2$0, x3) ? [0, x2$0, [0, x3, [0, x1$0, 0]]] : [0, x3, [0, x2$0, [0, x1$0, 0]]]; - /*<>*/ return [0, s$0, tl$1]; + /*<>*/ return [0, s$0, tl$1]; } } } var - n1 = /*<>*/ n >> 1, - n2 = /*<>*/ n - n1 | 0, - _a_ = /*<>*/ sort(n1, l), - l2$0 = /*<>*/ _a_[2], - s1 = _a_[1], - _a_ = /*<>*/ sort(n2, l2$0), - tl$0 = /*<>*/ _a_[2], - s2 = _a_[1], - l1 = /*<>*/ s1, + n1 = /*<>*/ n >> 1, + n2 = /*<>*/ n - n1 | 0, + _b_ = /*<>*/ sort(n1, l), + l2$0 = /*<>*/ _b_[2], + s1 = _b_[1], + _b_ = /*<>*/ sort(n2, l2$0), + tl$0 = /*<>*/ _b_[2], + s2 = _b_[1], + l1 = /*<>*/ s1, l2 = s2, accu = 0; for(;;){ - /*<>*/ if(l1){ + /*<>*/ if(l1){ if(l2){ var t2 = l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1]; - /*<>*/ if(0 < caml_call2(cmp, h1, h2)){ - var accu$0 = /*<>*/ [0, h2, accu]; + /*<>*/ if(0 < caml_call2(cmp, h1, h2)){ + var accu$0 = /*<>*/ [0, h2, accu]; l2 = t2; accu = accu$0; continue; } - var accu$1 = /*<>*/ [0, h1, accu]; + var accu$1 = /*<>*/ [0, h1, accu]; l1 = t1; accu = accu$1; continue; } - /*<>*/ _a_ = rev_append(l1, accu); + /*<>*/ _b_ = rev_append(l1, accu); } else - /*<>*/ _a_ = rev_append(l2, accu); - /*<>*/ return [0, _a_, tl$0]; + /*<>*/ _b_ = rev_append(l2, accu); + /*<>*/ return [0, _b_, tl$0]; } - /*<>*/ } - var len = /*<>*/ length(l); - /*<>*/ return 2 <= len - ? /*<>*/ sort(len, l)[1] - : l /*<>*/ ; + /*<>*/ } + var len = /*<>*/ length(l); + /*<>*/ return 2 <= len + ? /*<>*/ sort(len, l)[1] + : l /*<>*/ ; } function sort_uniq(cmp, l){ function sort(n, l){ - /*<>*/ if(2 === n){ + /*<>*/ if(2 === n){ if(l){ - var _a_ = l[2]; - if(_a_){ + var _b_ = l[2]; + if(_b_){ var - tl = _a_[2], - x2 = _a_[1], + tl = _b_[2], + x2 = _b_[1], x1 = l[1], - c$0 = /*<>*/ caml_call2(cmp, x1, x2), + c$0 = /*<>*/ caml_call2(cmp, x1, x2), s = - /*<>*/ 0 === c$0 + /*<>*/ 0 === c$0 ? [0, x1, 0] : 0 <= c$0 ? [0, x2, [0, x1, 0]] : [0, x1, [0, x2, 0]]; - /*<>*/ return [0, s, tl]; + /*<>*/ return [0, s, tl]; } } } else if(3 === n && l){ - /*<>*/ _a_ = l[2]; - if(_a_){ - var match = _a_[2]; + /*<>*/ _b_ = l[2]; + if(_b_){ + var match = _b_[2]; if(match){ var tl$1 = match[2], x3 = match[1], - x2$0 = _a_[1], + x2$0 = _b_[1], x1$0 = l[1], - c$1 = /*<>*/ caml_call2(cmp, x1$0, x2$0); - /*<>*/ if(0 === c$1) + c$1 = /*<>*/ caml_call2(cmp, x1$0, x2$0); + /*<>*/ if(0 === c$1) var - c$2 = /*<>*/ caml_call2(cmp, x1$0, x3), + c$2 = /*<>*/ caml_call2(cmp, x1$0, x3), s$0 = - /*<>*/ 0 === c$2 + /*<>*/ 0 === c$2 ? [0, x1$0, 0] : 0 <= c$2 ? [0, x3, [0, x1$0, 0]] : [0, x1$0, [0, x3, 0]]; else if(0 <= c$1){ - var c$3 = /*<>*/ caml_call2(cmp, x1$0, x3); - /*<>*/ if(0 === c$3) - /*<>*/ s$0 = [0, x2$0, [0, x1$0, 0]]; + var c$3 = /*<>*/ caml_call2(cmp, x1$0, x3); + /*<>*/ if(0 === c$3) + /*<>*/ s$0 = [0, x2$0, [0, x1$0, 0]]; else if(0 <= c$3) var - c$4 = /*<>*/ caml_call2(cmp, x2$0, x3), + c$4 = /*<>*/ caml_call2(cmp, x2$0, x3), s$0 = - /*<>*/ 0 === c$4 + /*<>*/ 0 === c$4 ? [0, x2$0, [0, x1$0, 0]] : 0 <= c$4 ? [0, x3, [0, x2$0, [0, x1$0, 0]]] : [0, x2$0, [0, x3, [0, x1$0, 0]]]; else - /*<>*/ s$0 = [0, x2$0, [0, x1$0, [0, x3, 0]]]; + /*<>*/ s$0 = [0, x2$0, [0, x1$0, [0, x3, 0]]]; } else{ - var c$5 = /*<>*/ caml_call2(cmp, x2$0, x3); - /*<>*/ if(0 === c$5) - /*<>*/ s$0 = [0, x1$0, [0, x2$0, 0]]; + var c$5 = /*<>*/ caml_call2(cmp, x2$0, x3); + /*<>*/ if(0 === c$5) + /*<>*/ s$0 = [0, x1$0, [0, x2$0, 0]]; else if(0 <= c$5) var - c$6 = /*<>*/ caml_call2(cmp, x1$0, x3), + c$6 = /*<>*/ caml_call2(cmp, x1$0, x3), s$0 = - /*<>*/ 0 === c$6 + /*<>*/ 0 === c$6 ? [0, x1$0, [0, x2$0, 0]] : 0 <= c$6 ? [0, x3, [0, x1$0, [0, x2$0, 0]]] : [0, x1$0, [0, x3, [0, x2$0, 0]]]; else - /*<>*/ s$0 = [0, x1$0, [0, x2$0, [0, x3, 0]]]; + /*<>*/ s$0 = [0, x1$0, [0, x2$0, [0, x3, 0]]]; } - /*<>*/ return [0, s$0, tl$1]; + /*<>*/ return [0, s$0, tl$1]; } } } var - n1 = /*<>*/ n >> 1, - n2 = /*<>*/ n - n1 | 0, - _a_ = /*<>*/ rev_sort(n1, l), - l2$0 = /*<>*/ _a_[2], - s1 = _a_[1], - _a_ = /*<>*/ rev_sort(n2, l2$0), - tl$0 = /*<>*/ _a_[2], - s2 = _a_[1], - l1 = /*<>*/ s1, + n1 = /*<>*/ n >> 1, + n2 = /*<>*/ n - n1 | 0, + _b_ = /*<>*/ rev_sort(n1, l), + l2$0 = /*<>*/ _b_[2], + s1 = _b_[1], + _b_ = /*<>*/ rev_sort(n2, l2$0), + tl$0 = /*<>*/ _b_[2], + s2 = _b_[1], + l1 = /*<>*/ s1, l2 = s2, accu = 0; for(;;){ - /*<>*/ if(l1){ + /*<>*/ if(l1){ if(l2){ var t2 = l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1], - c = /*<>*/ caml_call2(cmp, h1, h2); - /*<>*/ if(0 === c){ - var accu$0 = /*<>*/ [0, h1, accu]; + c = /*<>*/ caml_call2(cmp, h1, h2); + /*<>*/ if(0 === c){ + var accu$0 = /*<>*/ [0, h1, accu]; l1 = t1; l2 = t2; accu = accu$0; continue; } - /*<>*/ if(0 < c){ - var accu$1 = /*<>*/ [0, h1, accu]; + /*<>*/ if(0 < c){ + var accu$1 = /*<>*/ [0, h1, accu]; l1 = t1; accu = accu$1; continue; } - var accu$2 = /*<>*/ [0, h2, accu]; + var accu$2 = /*<>*/ [0, h2, accu]; l2 = t2; accu = accu$2; continue; } - /*<>*/ _a_ = rev_append(l1, accu); + /*<>*/ _b_ = rev_append(l1, accu); } else - /*<>*/ _a_ = rev_append(l2, accu); - /*<>*/ return [0, _a_, tl$0]; + /*<>*/ _b_ = rev_append(l2, accu); + /*<>*/ return [0, _b_, tl$0]; } - /*<>*/ } + /*<>*/ } function rev_sort(n, l){ - /*<>*/ if(2 === n){ + /*<>*/ if(2 === n){ if(l){ - var _a_ = l[2]; - if(_a_){ + var _b_ = l[2]; + if(_b_){ var - tl = _a_[2], - x2 = _a_[1], + tl = _b_[2], + x2 = _b_[1], x1 = l[1], - c$0 = /*<>*/ caml_call2(cmp, x1, x2), + c$0 = /*<>*/ caml_call2(cmp, x1, x2), s = - /*<>*/ 0 === c$0 + /*<>*/ 0 === c$0 ? [0, x1, 0] : 0 < c$0 ? [0, x1, [0, x2, 0]] : [0, x2, [0, x1, 0]]; - /*<>*/ return [0, s, tl]; + /*<>*/ return [0, s, tl]; } } } else if(3 === n && l){ - /*<>*/ _a_ = l[2]; - if(_a_){ - var match = _a_[2]; + /*<>*/ _b_ = l[2]; + if(_b_){ + var match = _b_[2]; if(match){ var tl$1 = match[2], x3 = match[1], - x2$0 = _a_[1], + x2$0 = _b_[1], x1$0 = l[1], - c$1 = /*<>*/ caml_call2(cmp, x1$0, x2$0); - /*<>*/ if(0 === c$1) + c$1 = /*<>*/ caml_call2(cmp, x1$0, x2$0); + /*<>*/ if(0 === c$1) var - c$2 = /*<>*/ caml_call2(cmp, x1$0, x3), + c$2 = /*<>*/ caml_call2(cmp, x1$0, x3), s$0 = - /*<>*/ 0 === c$2 + /*<>*/ 0 === c$2 ? [0, x1$0, 0] : 0 < c$2 ? [0, x1$0, [0, x3, 0]] : [0, x3, [0, x1$0, 0]]; else if(0 < c$1){ - var c$3 = /*<>*/ caml_call2(cmp, x2$0, x3); - /*<>*/ if(0 === c$3) - /*<>*/ s$0 = [0, x1$0, [0, x2$0, 0]]; + var c$3 = /*<>*/ caml_call2(cmp, x2$0, x3); + /*<>*/ if(0 === c$3) + /*<>*/ s$0 = [0, x1$0, [0, x2$0, 0]]; else if(0 < c$3) - /*<>*/ s$0 = [0, x1$0, [0, x2$0, [0, x3, 0]]]; + /*<>*/ s$0 = [0, x1$0, [0, x2$0, [0, x3, 0]]]; else var - c$4 = /*<>*/ caml_call2(cmp, x1$0, x3), + c$4 = /*<>*/ caml_call2(cmp, x1$0, x3), s$0 = - /*<>*/ 0 === c$4 + /*<>*/ 0 === c$4 ? [0, x1$0, [0, x2$0, 0]] : 0 < c$4 @@ -5027,104 +5210,104 @@ : [0, x3, [0, x1$0, [0, x2$0, 0]]]; } else{ - var c$5 = /*<>*/ caml_call2(cmp, x1$0, x3); - /*<>*/ if(0 === c$5) - /*<>*/ s$0 = [0, x2$0, [0, x1$0, 0]]; + var c$5 = /*<>*/ caml_call2(cmp, x1$0, x3); + /*<>*/ if(0 === c$5) + /*<>*/ s$0 = [0, x2$0, [0, x1$0, 0]]; else if(0 < c$5) - /*<>*/ s$0 = [0, x2$0, [0, x1$0, [0, x3, 0]]]; + /*<>*/ s$0 = [0, x2$0, [0, x1$0, [0, x3, 0]]]; else var - c$6 = /*<>*/ caml_call2(cmp, x2$0, x3), + c$6 = /*<>*/ caml_call2(cmp, x2$0, x3), s$0 = - /*<>*/ 0 === c$6 + /*<>*/ 0 === c$6 ? [0, x2$0, [0, x1$0, 0]] : 0 < c$6 ? [0, x2$0, [0, x3, [0, x1$0, 0]]] : [0, x3, [0, x2$0, [0, x1$0, 0]]]; } - /*<>*/ return [0, s$0, tl$1]; + /*<>*/ return [0, s$0, tl$1]; } } } var - n1 = /*<>*/ n >> 1, - n2 = /*<>*/ n - n1 | 0, - _a_ = /*<>*/ sort(n1, l), - l2$0 = /*<>*/ _a_[2], - s1 = _a_[1], - _a_ = /*<>*/ sort(n2, l2$0), - tl$0 = /*<>*/ _a_[2], - s2 = _a_[1], - l1 = /*<>*/ s1, + n1 = /*<>*/ n >> 1, + n2 = /*<>*/ n - n1 | 0, + _b_ = /*<>*/ sort(n1, l), + l2$0 = /*<>*/ _b_[2], + s1 = _b_[1], + _b_ = /*<>*/ sort(n2, l2$0), + tl$0 = /*<>*/ _b_[2], + s2 = _b_[1], + l1 = /*<>*/ s1, l2 = s2, accu = 0; for(;;){ - /*<>*/ if(l1){ + /*<>*/ if(l1){ if(l2){ var t2 = l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1], - c = /*<>*/ caml_call2(cmp, h1, h2); - /*<>*/ if(0 === c){ - var accu$0 = /*<>*/ [0, h1, accu]; + c = /*<>*/ caml_call2(cmp, h1, h2); + /*<>*/ if(0 === c){ + var accu$0 = /*<>*/ [0, h1, accu]; l1 = t1; l2 = t2; accu = accu$0; continue; } - /*<>*/ if(0 <= c){ - var accu$1 = /*<>*/ [0, h2, accu]; + /*<>*/ if(0 <= c){ + var accu$1 = /*<>*/ [0, h2, accu]; l2 = t2; accu = accu$1; continue; } - var accu$2 = /*<>*/ [0, h1, accu]; + var accu$2 = /*<>*/ [0, h1, accu]; l1 = t1; accu = accu$2; continue; } - /*<>*/ _a_ = rev_append(l1, accu); + /*<>*/ _b_ = rev_append(l1, accu); } else - /*<>*/ _a_ = rev_append(l2, accu); - /*<>*/ return [0, _a_, tl$0]; + /*<>*/ _b_ = rev_append(l2, accu); + /*<>*/ return [0, _b_, tl$0]; } - /*<>*/ } - var len = /*<>*/ length(l); - /*<>*/ return 2 <= len - ? /*<>*/ sort(len, l)[1] - : l /*<>*/ ; + /*<>*/ } + var len = /*<>*/ length(l); + /*<>*/ return 2 <= len + ? /*<>*/ sort(len, l)[1] + : l /*<>*/ ; } function compare_lengths(l1$1, l2$1){ - var l1 = /*<>*/ l1$1, l2 = l2$1; + var l1 = /*<>*/ l1$1, l2 = l2$1; for(;;){ - if(! l1) return l2 ? -1 : 0 /*<>*/ ; - /*<>*/ if(! l2) /*<>*/ return 1; - var l2$0 = /*<>*/ l2[2], l1$0 = l1[2]; - /*<>*/ l1 = l1$0; + if(! l1) return l2 ? -1 : 0 /*<>*/ ; + /*<>*/ if(! l2) /*<>*/ return 1; + var l2$0 = /*<>*/ l2[2], l1$0 = l1[2]; + /*<>*/ l1 = l1$0; l2 = l2$0; } - /*<>*/ } + /*<>*/ } function compare_length_with(l$1, n$1){ - var l = /*<>*/ l$1, n = n$1; + var l = /*<>*/ l$1, n = n$1; for(;;){ if(! l) - /*<>*/ return 0 === n ? 0 : 0 < n ? -1 : 1 /*<>*/ ; - var l$0 = /*<>*/ l[2]; - /*<>*/ if(0 >= n) /*<>*/ return 1; - var n$0 = /*<>*/ n - 1 | 0; + /*<>*/ return 0 === n ? 0 : 0 < n ? -1 : 1 /*<>*/ ; + var l$0 = /*<>*/ l[2]; + /*<>*/ if(0 >= n) /*<>*/ return 1; + var n$0 = /*<>*/ n - 1 | 0; l = l$0; n = n$0; } - /*<>*/ } + /*<>*/ } function is_empty(param){ - /*<>*/ return param ? 0 : 1 /*<>*/ ; + /*<>*/ return param ? 0 : 1 /*<>*/ ; } function equal(eq, l1$1, l2$1){ - var l1 = /*<>*/ l1$1, l2 = l2$1; + var l1 = /*<>*/ l1$1, l2 = l2$1; for(;;){ if(l1){ if(l2){ @@ -5133,83 +5316,83 @@ a2 = l2[1], l1$0 = l1[2], a1 = l1[1], - _a_ = /*<>*/ caml_call2(eq, a1, a2); - /*<>*/ if(! _a_) return _a_; + _b_ = /*<>*/ caml_call2(eq, a1, a2); + /*<>*/ if(! _b_) return _b_; l1 = l1$0; l2 = l2$0; continue; } } - else if(! l2) /*<>*/ return 1; - /*<>*/ return 0; + else if(! l2) /*<>*/ return 1; + /*<>*/ return 0; } - /*<>*/ } + /*<>*/ } function compare(cmp, l1$1, l2$1){ - var l1 = /*<>*/ l1$1, l2 = l2$1; + var l1 = /*<>*/ l1$1, l2 = l2$1; for(;;){ - if(! l1) return l2 ? -1 : 0 /*<>*/ ; - var l1$0 = /*<>*/ l1[2], a1 = l1[1]; - if(! l2) /*<>*/ return 1; + if(! l1) return l2 ? -1 : 0 /*<>*/ ; + var l1$0 = /*<>*/ l1[2], a1 = l1[1]; + if(! l2) /*<>*/ return 1; var - l2$0 = /*<>*/ l2[2], + l2$0 = /*<>*/ l2[2], a2 = l2[1], - c = /*<>*/ caml_call2(cmp, a1, a2); - /*<>*/ if(0 !== c) /*<>*/ return c; - /*<>*/ l1 = l1$0; + c = /*<>*/ caml_call2(cmp, a1, a2); + /*<>*/ if(0 !== c) /*<>*/ return c; + /*<>*/ l1 = l1$0; l2 = l2$0; } - /*<>*/ } + /*<>*/ } function to_seq(l){ function aux(l, param){ - /*<>*/ if(! l) /*<>*/ return 0; - var tail = /*<>*/ l[2], x = l[1]; - /*<>*/ return [0, + /*<>*/ if(! l) /*<>*/ return 0; + var tail = /*<>*/ l[2], x = l[1]; + /*<>*/ return [0, x, - function(_a_){ /*<>*/ return aux(tail, _a_);}] /*<>*/ ; - /*<>*/ } - /*<>*/ return function(_a_){return aux(l, _a_);}; - /*<>*/ } + function(_b_){ /*<>*/ return aux(tail, _b_);}] /*<>*/ ; + /*<>*/ } + /*<>*/ return function(_b_){return aux(l, _b_);}; + /*<>*/ } function of_seq(seq){ - var _a_ = /*<>*/ caml_call1(seq, 0); - /*<>*/ if(! _a_) /*<>*/ return 0; - var - seq$0 = /*<>*/ _a_[2], - x1 = _a_[1], - _a_ = /*<>*/ caml_call1(seq$0, 0); - /*<>*/ if(! _a_) - /*<>*/ return [0, x1, 0]; - var - seq$1 = /*<>*/ _a_[2], - x2 = _a_[1], - block = /*<>*/ [0, x2, 24029], - dst = /*<>*/ block, + var _b_ = /*<>*/ caml_call1(seq, 0); + /*<>*/ if(! _b_) /*<>*/ return 0; + var + seq$0 = /*<>*/ _b_[2], + x1 = _b_[1], + _b_ = /*<>*/ caml_call1(seq$0, 0); + /*<>*/ if(! _b_) + /*<>*/ return [0, x1, 0]; + var + seq$1 = /*<>*/ _b_[2], + x2 = _b_[1], + block = /*<>*/ [0, x2, 24029], + dst = /*<>*/ block, offset = 1, seq$2 = seq$1; for(;;){ - /*<>*/ _a_ = caml_call1(seq$2, 0); - /*<>*/ if(_a_){ + /*<>*/ _b_ = caml_call1(seq$2, 0); + /*<>*/ if(_b_){ var - seq$3 = _a_[2], - x1$0 = _a_[1], - _a_ = /*<>*/ caml_call1(seq$3, 0); - /*<>*/ if(_a_){ + seq$3 = _b_[2], + x1$0 = _b_[1], + _b_ = /*<>*/ caml_call1(seq$3, 0); + /*<>*/ if(_b_){ var - seq$4 = _a_[2], - x2$0 = _a_[1], - dst$0 = /*<>*/ [0, x2$0, 24029]; + seq$4 = _b_[2], + x2$0 = _b_[1], + dst$0 = /*<>*/ [0, x2$0, 24029]; dst[offset + 1] = [0, x1$0, dst$0]; dst = dst$0; offset = 1; seq$2 = seq$4; continue; } - /*<>*/ dst[offset + 1] = [0, x1$0, 0]; + /*<>*/ dst[offset + 1] = [0, x1$0, 0]; } else - /*<>*/ dst[offset + 1] = 0; - /*<>*/ return [0, x1, block]; + /*<>*/ dst[offset + 1] = 0; + /*<>*/ return [0, x1, block]; } - /*<>*/ } + /*<>*/ } /*<>*/ runtime.caml_register_global ([0, length, @@ -5236,6 +5419,7 @@ mapi, rev_map, filter_map, + filter_mapi, concat_map, fold_left_map, fold_left, @@ -5274,6 +5458,7 @@ remove_assoc, remove_assq, split, + split_map, combine, stable_sort, stable_sort, @@ -5288,11 +5473,17 @@ (globalThis)); //# unitInfo: Provides: Stdlib__Int -//# shape: Stdlib__Int:[N,N,N,F(1)*,N,N,F(1)*,F(2)*,F(2)*,F(2)*,F(2)*,F(1)*,F(2)*,F(1)*] +//# unitInfo: Requires: Stdlib__Sys +//# shape: Stdlib__Int:[N,N,N,F(2),F(2),F(2),F(2),F(1)*,N,N,F(1)*,F(2)*,F(2)*,F(2)*,F(2)*,F(1)*,F(1)*,F(1)*,F(1)*,F(1)*,F(1)*,F(1)*,F(2)*,F(1)*] (function (globalThis){ "use strict"; - var runtime = globalThis.jsoo_runtime, caml_hash = runtime.caml_hash; + var + runtime = globalThis.jsoo_runtime, + caml_div = runtime.caml_div, + caml_hash = runtime.caml_hash, + caml_mul = runtime.caml_mul, + Stdlib_Sys = runtime.caml_get_global("Stdlib__Sys"); function abs(x){ /*<>*/ return 0 <= x ? x : - x | 0 /*<>*/ ; } @@ -5307,18 +5498,129 @@ function max(x, y){ /*<>*/ return y <= x ? x : y /*<>*/ ; } - function to_string(x){ /*<>*/ return "" + x;} + function leading_zeros(x){ + var n = /*<>*/ Stdlib_Sys[12]; + /*<>*/ if(32 < Stdlib_Sys[12]){ + var y = /*<>*/ x >>> 32 | 0; + /*<>*/ if(0 !== y) + var n$0 = /*<>*/ n - 32 | 0, x$0 = y; + else{ /*<>*/ n$0 = n; x$0 = x;} + } + else{ /*<>*/ n$0 = n; x$0 = x;} + var y$0 = /*<>*/ x$0 >>> 16 | 0; + /*<>*/ if(0 !== y$0) + var n$1 = /*<>*/ n$0 - 16 | 0, x$1 = y$0; + else{ /*<>*/ n$1 = n$0; x$1 = x$0;} + var y$1 = /*<>*/ x$1 >>> 8 | 0; + /*<>*/ if(0 !== y$1) + var n$2 = /*<>*/ n$1 - 8 | 0, x$2 = y$1; + else{ /*<>*/ n$2 = n$1; x$2 = x$1;} + var y$2 = /*<>*/ x$2 >>> 4 | 0; + /*<>*/ if(0 !== y$2) + var n$3 = /*<>*/ n$2 - 4 | 0, x$3 = y$2; + else{ /*<>*/ n$3 = n$2; x$3 = x$2;} + var y$3 = /*<>*/ x$3 >>> 2 | 0; + /*<>*/ if(0 !== y$3) + var n$4 = /*<>*/ n$3 - 2 | 0, x$4 = y$3; + else{ /*<>*/ n$4 = n$3; x$4 = x$3;} + var y$4 = /*<>*/ x$4 >>> 1 | 0; + /*<>*/ return 0 === y$4 ? n$4 - x$4 | 0 : n$4 - 2 | 0 /*<>*/ ; + } + function unsigned_bitsize(x){ + var _a_ = /*<>*/ leading_zeros(x); + /*<>*/ return Stdlib_Sys[12] - _a_ | 0; + } + function leading_sign_bits(x){ + /*<>*/ return 0 <= x + ? /*<>*/ leading_zeros(x) - 1 | 0 + : /*<>*/ leading_zeros(x ^ -1) - 1 | 0 /*<>*/ ; + } + function signed_bitsize(x){ + var _a_ = /*<>*/ leading_sign_bits(x); + /*<>*/ return Stdlib_Sys[12] - _a_ | 0; + } + function trailing_zeros(x){ + /*<>*/ if(0 === x) + /*<>*/ return Stdlib_Sys[12]; + var n = /*<>*/ Stdlib_Sys[12] - 1 | 0; + /*<>*/ if(32 < Stdlib_Sys[12]){ + var y = /*<>*/ x << 32; + /*<>*/ if(0 !== y) + var n$0 = /*<>*/ n - 32 | 0, x$0 = y; + else{ /*<>*/ n$0 = n; x$0 = x;} + } + else{ /*<>*/ n$0 = n; x$0 = x;} + var y$0 = /*<>*/ x$0 << 16; + /*<>*/ if(0 !== y$0) + var n$1 = /*<>*/ n$0 - 16 | 0, x$1 = y$0; + else{ /*<>*/ n$1 = n$0; x$1 = x$0;} + var y$1 = /*<>*/ x$1 << 8; + /*<>*/ if(0 !== y$1) + var n$2 = /*<>*/ n$1 - 8 | 0, x$2 = y$1; + else{ /*<>*/ n$2 = n$1; x$2 = x$1;} + var y$2 = /*<>*/ x$2 << 4; + /*<>*/ if(0 !== y$2) + var n$3 = /*<>*/ n$2 - 4 | 0, x$3 = y$2; + else{ /*<>*/ n$3 = n$2; x$3 = x$2;} + var y$3 = /*<>*/ x$3 << 2; + /*<>*/ if(0 !== y$3) + var n$4 = /*<>*/ n$3 - 2 | 0, x$4 = y$3; + else{ /*<>*/ n$4 = n$3; x$4 = x$3;} + var y$4 = /*<>*/ x$4 << 1; + /*<>*/ return 0 === y$4 ? n$4 : n$4 - 1 | 0 /*<>*/ ; + } + function popcount(x){ + var + x$0 = /*<>*/ x - ((x >>> 1 | 0) & 1431655765) | 0, + x$1 = + /*<>*/ (x$0 & 858993459) + ((x$0 >>> 2 | 0) & 858993459) + | 0, + x$2 = /*<>*/ (x$1 + (x$1 >>> 4 | 0) | 0) & 252645135, + x$3 = /*<>*/ x$2 + (x$2 >>> 8 | 0) | 0, + x$4 = /*<>*/ x$3 + (x$3 >>> 16 | 0) | 0; + /*<>*/ if(32 >= Stdlib_Sys[12]) + /*<>*/ return x$4 & 63; + var x$5 = /*<>*/ x$4 + (x$4 >>> 32 | 0) | 0; + /*<>*/ return x$5 & 127; + /*<>*/ } + function to_string(x){ /*<>*/ return "" + x;} function seeded_hash(seed, x){ - /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; } function hash(x){ - /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; + } + function fdiv(n, d){ + var q = /*<>*/ caml_div(n, d); + /*<>*/ if(0 > (n ^ d) && n !== caml_mul(q, d)) + /*<>*/ return q - 1 | 0; + /*<>*/ return q; + /*<>*/ } + function cdiv(n, d){ + var q = /*<>*/ caml_div(n, d); + /*<>*/ if(0 <= (n ^ d) && n !== caml_mul(q, d)) + /*<>*/ return q + 1 | 0; + /*<>*/ return q; + /*<>*/ } + function erem(n, d){ + var r = /*<>*/ runtime.caml_mod(n, d); + /*<>*/ return 0 <= r ? r : 0 <= d ? r + d | 0 : r - d | 0 /*<>*/ ; + } + function ediv(n, d){ + var + q = /*<>*/ caml_div(n, d), + r = /*<>*/ n - caml_mul(q, d) | 0; + /*<>*/ return 0 <= r ? q : 0 <= d ? q - 1 | 0 : q + 1 | 0 /*<>*/ ; } /*<>*/ runtime.caml_register_global ([0, 0, 1, -1, + fdiv, + cdiv, + ediv, + erem, abs, 2147483647, -2147483648, @@ -5327,6 +5629,12 @@ compare, min, max, + popcount, + unsigned_bitsize, + signed_bitsize, + leading_zeros, + leading_sign_bits, + trailing_zeros, to_string, seeded_hash, hash], @@ -5337,7 +5645,7 @@ //# unitInfo: Provides: Stdlib__Array //# unitInfo: Requires: Stdlib, Stdlib__Seq -//# shape: Stdlib__Array:[F(2),F(3),F(3),F(2)*,F(1)*,F(3),F(1)*,F(4),F(5),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),$0=F(2),$0,F(2),F(1)*->F(1)*,F(1)*->F(1)*,F(1),[]] +//# shape: Stdlib__Array:[F(2),F(3),F(3),F(2)*,F(1)*,F(3),F(1)*,F(4),F(5),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),$0=F(2),F(4),$0,F(2),F(1)*->F(1)*,F(1)*->F(1)*,F(1),[]] (function (globalThis){ "use strict"; @@ -5364,663 +5672,663 @@ Stdlib = caml_get_global("Stdlib"), Assert_failure = runtime.caml_get_global_predef("Assert_failure"); function init(l, f){ - /*<>*/ if(0 === l) /*<>*/ return [0]; - /*<>*/ if(0 > l) - /*<>*/ return Stdlib[1].call(null, "Array.init") /*<>*/ ; + /*<>*/ if(0 === l) /*<>*/ return [0]; + /*<>*/ if(0 > l) + /*<>*/ return Stdlib[1].call(null, "Array.init") /*<>*/ ; var res = - /*<>*/ /*<>*/ caml_array_make - (l, /*<>*/ caml_call1(f, 0)), - _w_ = /*<>*/ l - 1 | 0; + /*<>*/ /*<>*/ caml_array_make + (l, /*<>*/ caml_call1(f, 0)), + _w_ = /*<>*/ l - 1 | 0; if(_w_ >= 1){ var i = 1; for(;;){ - /*<>*/ res[i + 1] = caml_call1(f, i); - var _x_ = /*<>*/ i + 1 | 0; + /*<>*/ res[i + 1] = caml_call1(f, i); + var _x_ = /*<>*/ i + 1 | 0; if(_w_ === i) break; i = _x_; } } - /*<>*/ return res; - /*<>*/ } + /*<>*/ return res; + /*<>*/ } function make_matrix(sx, sy, init){ - /*<>*/ if(sy < 0) - /*<>*/ Stdlib[1].call(null, "Array.make_matrix"); - var res = /*<>*/ caml_array_make(sx, [0]); - /*<>*/ if(0 < sy){ - var _v_ = /*<>*/ sx - 1 | 0; + /*<>*/ if(sy < 0) + /*<>*/ Stdlib[1].call(null, "Array.make_matrix"); + var res = /*<>*/ caml_array_make(sx, [0]); + /*<>*/ if(0 < sy){ + var _v_ = /*<>*/ sx - 1 | 0; if(_v_ >= 0){ var x = 0; for(;;){ - /*<>*/ res[x + 1] = caml_array_make(sy, init); - var _w_ = /*<>*/ x + 1 | 0; + /*<>*/ res[x + 1] = caml_array_make(sy, init); + var _w_ = /*<>*/ x + 1 | 0; if(_v_ === x) break; x = _w_; } } } - /*<>*/ return res; - /*<>*/ } + /*<>*/ return res; + /*<>*/ } function init_matrix(sx, sy, f){ - /*<>*/ if(sy < 0) - /*<>*/ Stdlib[1].call(null, "Array.init_matrix"); - var res = /*<>*/ caml_array_make(sx, [0]); - /*<>*/ if(0 < sy){ - var _u_ = /*<>*/ sx - 1 | 0; + /*<>*/ if(sy < 0) + /*<>*/ Stdlib[1].call(null, "Array.init_matrix"); + var res = /*<>*/ caml_array_make(sx, [0]); + /*<>*/ if(0 < sy){ + var _u_ = /*<>*/ sx - 1 | 0; if(_u_ >= 0){ var x = 0; for(;;){ var row = - /*<>*/ /*<>*/ caml_array_make - (sy, /*<>*/ caml_call2(f, x, 0)), - _t_ = /*<>*/ sy - 1 | 0; + /*<>*/ /*<>*/ caml_array_make + (sy, /*<>*/ caml_call2(f, x, 0)), + _t_ = /*<>*/ sy - 1 | 0; if(_t_ >= 1){ var y = 1; for(;;){ - /*<>*/ row[y + 1] = caml_call2(f, x, y); - var _v_ = /*<>*/ y + 1 | 0; + /*<>*/ row[y + 1] = caml_call2(f, x, y); + var _v_ = /*<>*/ y + 1 | 0; if(_t_ === y) break; y = _v_; } } - /*<>*/ res[x + 1] = row; + /*<>*/ res[x + 1] = row; _t_ = x + 1 | 0; if(_u_ === x) break; x = _t_; } } } - /*<>*/ return res; - /*<>*/ } + /*<>*/ return res; + /*<>*/ } function copy(a){ - var l = /*<>*/ a.length - 1; - /*<>*/ return 0 === l + var l = /*<>*/ a.length - 1; + /*<>*/ return 0 === l ? [0] - : /*<>*/ caml_array_sub(a, 0, l) /*<>*/ ; + : /*<>*/ caml_array_sub(a, 0, l) /*<>*/ ; } function append(a1, a2){ - var l1 = /*<>*/ a1.length - 1; - /*<>*/ return 0 === l1 - ? /*<>*/ copy(a2) + var l1 = /*<>*/ a1.length - 1; + /*<>*/ return 0 === l1 + ? /*<>*/ copy(a2) : 0 === a2.length - 1 - ? /*<>*/ caml_array_sub(a1, 0, l1) - : /*<>*/ runtime.caml_array_append(a1, a2) /*<>*/ ; + ? /*<>*/ caml_array_sub(a1, 0, l1) + : /*<>*/ runtime.caml_array_append(a1, a2) /*<>*/ ; } function sub(a, ofs, len){ - /*<>*/ if + /*<>*/ if (0 <= ofs && 0 <= len && (a.length - 1 - len | 0) >= ofs) - /*<>*/ return caml_array_sub(a, ofs, len) /*<>*/ ; - /*<>*/ return Stdlib[1].call(null, "Array.sub") /*<>*/ ; + /*<>*/ return caml_array_sub(a, ofs, len) /*<>*/ ; + /*<>*/ return Stdlib[1].call(null, "Array.sub") /*<>*/ ; } function fill(a, ofs, len, v){ - /*<>*/ if + /*<>*/ if (0 <= ofs && 0 <= len && (a.length - 1 - len | 0) >= ofs) - /*<>*/ return runtime.caml_array_fill(a, ofs, len, v) /*<>*/ ; - /*<>*/ return Stdlib[1].call(null, "Array.fill") /*<>*/ ; + /*<>*/ return runtime.caml_array_fill(a, ofs, len, v) /*<>*/ ; + /*<>*/ return Stdlib[1].call(null, "Array.fill") /*<>*/ ; } function blit(a1, ofs1, a2, ofs2, len){ - /*<>*/ if + /*<>*/ if (0 <= len && 0 <= ofs1 && (a1.length - 1 - len | 0) >= ofs1 && 0 <= ofs2 && (a2.length - 1 - len | 0) >= ofs2) - /*<>*/ return runtime.caml_array_blit - (a1, ofs1, a2, ofs2, len) /*<>*/ ; - /*<>*/ return Stdlib[1].call(null, "Array.blit") /*<>*/ ; + /*<>*/ return runtime.caml_array_blit + (a1, ofs1, a2, ofs2, len) /*<>*/ ; + /*<>*/ return Stdlib[1].call(null, "Array.blit") /*<>*/ ; } function iter(f, a){ - var _s_ = /*<>*/ a.length - 2 | 0; + var _s_ = /*<>*/ a.length - 2 | 0; if(_s_ >= 0){ var i = 0; for(;;){ - /*<>*/ caml_call1(f, a[i + 1]); - var _t_ = /*<>*/ i + 1 | 0; + /*<>*/ caml_call1(f, a[i + 1]); + var _t_ = /*<>*/ i + 1 | 0; if(_s_ === i) break; i = _t_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function iter2(f, a, b){ - /*<>*/ if(a.length - 1 !== b.length - 1) - /*<>*/ return Stdlib[1].call - (null, "Array.iter2: arrays must have the same length") /*<>*/ ; - var _r_ = /*<>*/ a.length - 2 | 0; + /*<>*/ if(a.length - 1 !== b.length - 1) + /*<>*/ return Stdlib[1].call + (null, "Array.iter2: arrays must have the same length") /*<>*/ ; + var _r_ = /*<>*/ a.length - 2 | 0; if(_r_ >= 0){ var i = 0; for(;;){ - /*<>*/ caml_call2(f, a[i + 1], b[i + 1]); - var _s_ = /*<>*/ i + 1 | 0; + /*<>*/ caml_call2(f, a[i + 1], b[i + 1]); + var _s_ = /*<>*/ i + 1 | 0; if(_r_ === i) break; i = _s_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function map(f, a){ - var l = /*<>*/ a.length - 1; - /*<>*/ if(0 === l) /*<>*/ return [0]; + var l = /*<>*/ a.length - 1; + /*<>*/ if(0 === l) /*<>*/ return [0]; var r = - /*<>*/ /*<>*/ caml_array_make - (l, /*<>*/ caml_call1(f, a[1])), - _q_ = /*<>*/ l - 1 | 0; + /*<>*/ /*<>*/ caml_array_make + (l, /*<>*/ caml_call1(f, a[1])), + _q_ = /*<>*/ l - 1 | 0; if(_q_ >= 1){ var i = 1; for(;;){ - /*<>*/ r[i + 1] = caml_call1(f, a[i + 1]); - var _r_ = /*<>*/ i + 1 | 0; + /*<>*/ r[i + 1] = caml_call1(f, a[i + 1]); + var _r_ = /*<>*/ i + 1 | 0; if(_q_ === i) break; i = _r_; } } - /*<>*/ return r; - /*<>*/ } + /*<>*/ return r; + /*<>*/ } function map_inplace(f, a){ - var _p_ = /*<>*/ a.length - 2 | 0; + var _p_ = /*<>*/ a.length - 2 | 0; if(_p_ >= 0){ var i = 0; for(;;){ - /*<>*/ a[i + 1] = caml_call1(f, a[i + 1]); - var _q_ = /*<>*/ i + 1 | 0; + /*<>*/ a[i + 1] = caml_call1(f, a[i + 1]); + var _q_ = /*<>*/ i + 1 | 0; if(_p_ === i) break; i = _q_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function mapi_inplace(f, a){ - var _o_ = /*<>*/ a.length - 2 | 0; + var _o_ = /*<>*/ a.length - 2 | 0; if(_o_ >= 0){ var i = 0; for(;;){ - /*<>*/ a[i + 1] = caml_call2(f, i, a[i + 1]); - var _p_ = /*<>*/ i + 1 | 0; + /*<>*/ a[i + 1] = caml_call2(f, i, a[i + 1]); + var _p_ = /*<>*/ i + 1 | 0; if(_o_ === i) break; i = _p_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function map2(f, a, b){ var - la = /*<>*/ a.length - 1, - lb = /*<>*/ b.length - 1; - /*<>*/ if(la !== lb) - /*<>*/ return Stdlib[1].call - (null, "Array.map2: arrays must have the same length") /*<>*/ ; - /*<>*/ if(0 === la) /*<>*/ return [0]; + la = /*<>*/ a.length - 1, + lb = /*<>*/ b.length - 1; + /*<>*/ if(la !== lb) + /*<>*/ return Stdlib[1].call + (null, "Array.map2: arrays must have the same length") /*<>*/ ; + /*<>*/ if(0 === la) /*<>*/ return [0]; var r = - /*<>*/ /*<>*/ caml_array_make - (la, /*<>*/ caml_call2(f, a[1], b[1])), - _n_ = /*<>*/ la - 1 | 0; + /*<>*/ /*<>*/ caml_array_make + (la, /*<>*/ caml_call2(f, a[1], b[1])), + _n_ = /*<>*/ la - 1 | 0; if(_n_ >= 1){ var i = 1; for(;;){ - /*<>*/ r[i + 1] = caml_call2(f, a[i + 1], b[i + 1]); - var _o_ = /*<>*/ i + 1 | 0; + /*<>*/ r[i + 1] = caml_call2(f, a[i + 1], b[i + 1]); + var _o_ = /*<>*/ i + 1 | 0; if(_n_ === i) break; i = _o_; } } - /*<>*/ return r; - /*<>*/ } + /*<>*/ return r; + /*<>*/ } function iteri(f, a){ - var _m_ = /*<>*/ a.length - 2 | 0; + var _m_ = /*<>*/ a.length - 2 | 0; if(_m_ >= 0){ var i = 0; for(;;){ - /*<>*/ caml_call2(f, i, a[i + 1]); - var _n_ = /*<>*/ i + 1 | 0; + /*<>*/ caml_call2(f, i, a[i + 1]); + var _n_ = /*<>*/ i + 1 | 0; if(_m_ === i) break; i = _n_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function mapi(f, a){ - var l = /*<>*/ a.length - 1; - /*<>*/ if(0 === l) /*<>*/ return [0]; + var l = /*<>*/ a.length - 1; + /*<>*/ if(0 === l) /*<>*/ return [0]; var r = - /*<>*/ /*<>*/ caml_array_make - (l, /*<>*/ caml_call2(f, 0, a[1])), - _l_ = /*<>*/ l - 1 | 0; + /*<>*/ /*<>*/ caml_array_make + (l, /*<>*/ caml_call2(f, 0, a[1])), + _l_ = /*<>*/ l - 1 | 0; if(_l_ >= 1){ var i = 1; for(;;){ - /*<>*/ r[i + 1] = caml_call2(f, i, a[i + 1]); - var _m_ = /*<>*/ i + 1 | 0; + /*<>*/ r[i + 1] = caml_call2(f, i, a[i + 1]); + var _m_ = /*<>*/ i + 1 | 0; if(_l_ === i) break; i = _m_; } } - /*<>*/ return r; - /*<>*/ } + /*<>*/ return r; + /*<>*/ } function to_list(a){ - var i$1 = /*<>*/ a.length - 2 | 0, i = i$1, res = 0; + var i$1 = /*<>*/ a.length - 2 | 0, i = i$1, res = 0; for(;;){ - /*<>*/ if(0 > i) /*<>*/ return res; - var res$0 = /*<>*/ [0, a[i + 1], res], i$0 = i - 1 | 0; + /*<>*/ if(0 > i) /*<>*/ return res; + var res$0 = /*<>*/ [0, a[i + 1], res], i$0 = i - 1 | 0; i = i$0; res = res$0; } - /*<>*/ } + /*<>*/ } function list_length(accu$1, _l_){ - var accu = /*<>*/ accu$1; + var accu = /*<>*/ accu$1; for(;;){ - if(! _l_) /*<>*/ return accu; + if(! _l_) /*<>*/ return accu; var - t = /*<>*/ _l_[2], - accu$0 = /*<>*/ accu + 1 | 0; + t = /*<>*/ _l_[2], + accu$0 = /*<>*/ accu + 1 | 0; accu = accu$0; _l_ = t; } - /*<>*/ } + /*<>*/ } function of_list(l){ - /*<>*/ if(! l) /*<>*/ return [0]; + /*<>*/ if(! l) /*<>*/ return [0]; var - tl = /*<>*/ l[2], + tl = /*<>*/ l[2], hd = l[1], a = - /*<>*/ /*<>*/ caml_array_make - ( /*<>*/ list_length(0, l), hd), - i = /*<>*/ 1, + /*<>*/ /*<>*/ caml_array_make + ( /*<>*/ list_length(0, l), hd), + i = /*<>*/ 1, param = tl; for(;;){ - /*<>*/ if(! param) /*<>*/ return a; - var tl$0 = /*<>*/ param[2], hd$0 = param[1]; - /*<>*/ a[i + 1] = hd$0; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(! param) /*<>*/ return a; + var tl$0 = /*<>*/ param[2], hd$0 = param[1]; + /*<>*/ a[i + 1] = hd$0; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; param = tl$0; } - /*<>*/ } + /*<>*/ } function equal(eq, a, b){ - /*<>*/ if(a.length - 1 !== b.length - 1) - /*<>*/ return 0; + /*<>*/ if(a.length - 1 !== b.length - 1) + /*<>*/ return 0; var - len = /*<>*/ a.length - 1, - i = /*<>*/ 0; + len = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ if - (i < len && /*<>*/ caml_call2(eq, a[i + 1], b[i + 1])){var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue;} - /*<>*/ return i === len ? 1 : 0; + (i < len && /*<>*/ caml_call2(eq, a[i + 1], b[i + 1])){var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue;} + /*<>*/ return i === len ? 1 : 0; } - /*<>*/ } + /*<>*/ } function compare(cmp, a, b){ var - len_a = /*<>*/ a.length - 1, + len_a = /*<>*/ a.length - 1, len_b = b.length - 1, - diff = /*<>*/ len_a - len_b | 0; - /*<>*/ if(0 !== diff) - /*<>*/ return 0 <= diff ? 1 : -1 /*<>*/ ; - var c = /*<>*/ 0, i = 0; + diff = /*<>*/ len_a - len_b | 0; + /*<>*/ if(0 !== diff) + /*<>*/ return 0 <= diff ? 1 : -1 /*<>*/ ; + var c = /*<>*/ 0, i = 0; for(;;){ if(i < len_a && 0 === c){ - var i$0 = /*<>*/ i + 1 | 0; - c = /*<>*/ caml_call2(cmp, a[i + 1], b[i + 1]); - /*<>*/ i = i$0; + var i$0 = /*<>*/ i + 1 | 0; + c = /*<>*/ caml_call2(cmp, a[i + 1], b[i + 1]); + /*<>*/ i = i$0; continue; } - /*<>*/ return c; + /*<>*/ return c; } - /*<>*/ } + /*<>*/ } function fold_left(f, x, a){ - var _j_ = /*<>*/ a.length - 2 | 0; + var _j_ = /*<>*/ a.length - 2 | 0; if(_j_ < 0) var r$0 = x; else{ var r = x, i = 0; for(;;){ var - _k_ = /*<>*/ caml_call2(f, r, a[i + 1]), - _l_ = /*<>*/ i + 1 | 0; + _k_ = /*<>*/ caml_call2(f, r, a[i + 1]), + _l_ = /*<>*/ i + 1 | 0; if(_j_ === i){r$0 = _k_; break;} r = _k_; i = _l_; } } - /*<>*/ return r$0; - /*<>*/ } + /*<>*/ return r$0; + /*<>*/ } function fold_left_map(f, acc, input_array){ - var len = /*<>*/ input_array.length - 1; - /*<>*/ if(0 === len) - /*<>*/ return [0, acc, [0]]; + var len = /*<>*/ input_array.length - 1; + /*<>*/ if(0 === len) + /*<>*/ return [0, acc, [0]]; var - _i_ = /*<>*/ caml_call2(f, acc, input_array[1]), - elt = /*<>*/ _i_[2], + _i_ = /*<>*/ caml_call2(f, acc, input_array[1]), + elt = /*<>*/ _i_[2], acc$0 = _i_[1], - output_array = /*<>*/ caml_array_make(len, elt), - _i_ = /*<>*/ len - 1 | 0; + output_array = /*<>*/ caml_array_make(len, elt), + _i_ = /*<>*/ len - 1 | 0; if(_i_ < 1) var acc$3 = acc$0; else{ var acc$2 = acc$0, i = 1; for(;;){ var - _j_ = /*<>*/ caml_call2(f, acc$2, input_array[i + 1]), - elt$0 = /*<>*/ _j_[2], + _j_ = /*<>*/ caml_call2(f, acc$2, input_array[i + 1]), + elt$0 = /*<>*/ _j_[2], acc$1 = _j_[1]; - /*<>*/ output_array[i + 1] = elt$0; - /*<>*/ _j_ = i + 1 | 0; + /*<>*/ output_array[i + 1] = elt$0; + /*<>*/ _j_ = i + 1 | 0; if(_i_ === i){acc$3 = acc$1; break;} acc$2 = acc$1; i = _j_; } } - /*<>*/ return [0, acc$3, output_array]; - /*<>*/ } + /*<>*/ return [0, acc$3, output_array]; + /*<>*/ } function fold_right(f, a, x){ - var _h_ = /*<>*/ a.length - 2 | 0; + var _h_ = /*<>*/ a.length - 2 | 0; if(_h_ < 0) var r$0 = x; else{ var r = x, i = _h_; for(;;){ - /*<>*/ _h_ = caml_call2(f, a[i + 1], r); - var _i_ = /*<>*/ i - 1 | 0; + /*<>*/ _h_ = caml_call2(f, a[i + 1], r); + var _i_ = /*<>*/ i - 1 | 0; if(0 === i){r$0 = _h_; break;} r = _h_; i = _i_; } } - /*<>*/ return r$0; - /*<>*/ } + /*<>*/ return r$0; + /*<>*/ } function exists(p, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 0; - /*<>*/ if(caml_call1(p, a[i + 1])) - /*<>*/ return 1; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 0; + /*<>*/ if(caml_call1(p, a[i + 1])) + /*<>*/ return 1; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function for_all(p, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 1; - /*<>*/ if(! caml_call1(p, a[i + 1])) - /*<>*/ return 0; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 1; + /*<>*/ if(! caml_call1(p, a[i + 1])) + /*<>*/ return 0; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function for_all2(p, l1, l2){ - var n1 = /*<>*/ l1.length - 1, n2 = l2.length - 1; - /*<>*/ if(n1 !== n2) - /*<>*/ return Stdlib[1].call(null, "Array.for_all2") /*<>*/ ; - var i = /*<>*/ 0; + var n1 = /*<>*/ l1.length - 1, n2 = l2.length - 1; + /*<>*/ if(n1 !== n2) + /*<>*/ return Stdlib[1].call(null, "Array.for_all2") /*<>*/ ; + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n1) /*<>*/ return 1; - /*<>*/ if(! caml_call2(p, l1[i + 1], l2[i + 1])) - /*<>*/ return 0; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n1) /*<>*/ return 1; + /*<>*/ if(! caml_call2(p, l1[i + 1], l2[i + 1])) + /*<>*/ return 0; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function exists2(p, l1, l2){ - var n1 = /*<>*/ l1.length - 1, n2 = l2.length - 1; - /*<>*/ if(n1 !== n2) - /*<>*/ return Stdlib[1].call(null, "Array.exists2") /*<>*/ ; - var i = /*<>*/ 0; + var n1 = /*<>*/ l1.length - 1, n2 = l2.length - 1; + /*<>*/ if(n1 !== n2) + /*<>*/ return Stdlib[1].call(null, "Array.exists2") /*<>*/ ; + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n1) /*<>*/ return 0; - /*<>*/ if(caml_call2(p, l1[i + 1], l2[i + 1])) - /*<>*/ return 1; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n1) /*<>*/ return 0; + /*<>*/ if(caml_call2(p, l1[i + 1], l2[i + 1])) + /*<>*/ return 1; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function mem(x, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 0; - /*<>*/ if(0 === runtime.caml_compare(a[i + 1], x)) - /*<>*/ return 1; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 0; + /*<>*/ if(0 === runtime.caml_compare(a[i + 1], x)) + /*<>*/ return 1; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function memq(x, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 0; - /*<>*/ if(x === a[i + 1]) - /*<>*/ return 1; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 0; + /*<>*/ if(x === a[i + 1]) + /*<>*/ return 1; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function find_opt(p, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 0; - var x = /*<>*/ a[i + 1]; - /*<>*/ if(caml_call1(p, x)) - /*<>*/ return [0, x]; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 0; + var x = /*<>*/ a[i + 1]; + /*<>*/ if(caml_call1(p, x)) + /*<>*/ return [0, x]; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function find_index(p, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 0; - /*<>*/ if(caml_call1(p, a[i + 1])) - /*<>*/ return [0, i]; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 0; + /*<>*/ if(caml_call1(p, a[i + 1])) + /*<>*/ return [0, i]; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function find_map(f, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 0; - var r = /*<>*/ caml_call1(f, a[i + 1]); - /*<>*/ if(r) /*<>*/ return r; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 0; + var r = /*<>*/ caml_call1(f, a[i + 1]); + /*<>*/ if(r) /*<>*/ return r; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function find_mapi(f, a){ var - n = /*<>*/ a.length - 1, - i = /*<>*/ 0; + n = /*<>*/ a.length - 1, + i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === n) /*<>*/ return 0; - var r = /*<>*/ caml_call2(f, i, a[i + 1]); - /*<>*/ if(r) /*<>*/ return r; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(i === n) /*<>*/ return 0; + var r = /*<>*/ caml_call2(f, i, a[i + 1]); + /*<>*/ if(r) /*<>*/ return r; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function split(x){ - /*<>*/ if(runtime.caml_equal(x, [0])) - /*<>*/ return [0, [0], [0]]; + /*<>*/ if(runtime.caml_equal(x, [0])) + /*<>*/ return [0, [0], [0]]; var - _g_ = /*<>*/ x[1], + _g_ = /*<>*/ x[1], b0 = _g_[2], a0 = _g_[1], - n = /*<>*/ x.length - 1, - a = /*<>*/ caml_array_make(n, a0), - b = /*<>*/ caml_array_make(n, b0), - _g_ = /*<>*/ n - 1 | 0; + n = /*<>*/ x.length - 1, + a = /*<>*/ caml_array_make(n, a0), + b = /*<>*/ caml_array_make(n, b0), + _g_ = /*<>*/ n - 1 | 0; if(_g_ >= 1){ var i = 1; for(;;){ - var _h_ = /*<>*/ x[i + 1], bi = _h_[2], ai = _h_[1]; - /*<>*/ a[i + 1] = ai; - /*<>*/ b[i + 1] = bi; - /*<>*/ _h_ = i + 1 | 0; + var _h_ = /*<>*/ x[i + 1], bi = _h_[2], ai = _h_[1]; + /*<>*/ a[i + 1] = ai; + /*<>*/ b[i + 1] = bi; + /*<>*/ _h_ = i + 1 | 0; if(_g_ === i) break; i = _h_; } } - /*<>*/ return [0, a, b]; - /*<>*/ } + /*<>*/ return [0, a, b]; + /*<>*/ } function combine(a, b){ var - na = /*<>*/ a.length - 1, - nb = /*<>*/ b.length - 1; - /*<>*/ if(na !== nb) - /*<>*/ Stdlib[1].call(null, "Array.combine"); - /*<>*/ if(0 === na) /*<>*/ return [0]; + na = /*<>*/ a.length - 1, + nb = /*<>*/ b.length - 1; + /*<>*/ if(na !== nb) + /*<>*/ Stdlib[1].call(null, "Array.combine"); + /*<>*/ if(0 === na) /*<>*/ return [0]; var - x = /*<>*/ caml_array_make(na, [0, a[1], b[1]]), - _f_ = /*<>*/ na - 1 | 0; + x = /*<>*/ caml_array_make(na, [0, a[1], b[1]]), + _f_ = /*<>*/ na - 1 | 0; if(_f_ >= 1){ var i = 1; for(;;){ - /*<>*/ x[i + 1] = [0, a[i + 1], b[i + 1]]; + /*<>*/ x[i + 1] = [0, a[i + 1], b[i + 1]]; var _g_ = i + 1 | 0; if(_f_ === i) break; i = _g_; } } - /*<>*/ return x; - /*<>*/ } + /*<>*/ return x; + /*<>*/ } var Bottom = /*<>*/ [248, "Stdlib.Array.Bottom", runtime.caml_fresh_oo_id(0)], - _a_ = [0, "array.ml", 386, 4]; + _a_ = [0, "array.ml", 385, 4]; function sort(cmp, a){ function maxson(l, i){ - var i31 = /*<>*/ ((i + i | 0) + i | 0) + 1 | 0; - /*<>*/ if((i31 + 2 | 0) < l){ + var i31 = /*<>*/ ((i + i | 0) + i | 0) + 1 | 0; + /*<>*/ if((i31 + 2 | 0) < l){ var - _f_ = /*<>*/ i31 + 1 | 0, - _f_ = /*<>*/ caml_check_bound(a, _f_)[_f_ + 1], + _f_ = /*<>*/ i31 + 1 | 0, + _f_ = /*<>*/ caml_check_bound(a, _f_)[_f_ + 1], x = - /*<>*/ /*<>*/ caml_call2 + /*<>*/ /*<>*/ caml_call2 (cmp, - /*<>*/ caml_check_bound(a, i31)[i31 + 1], + /*<>*/ caml_check_bound(a, i31)[i31 + 1], _f_) < 0 ? i31 + 1 | 0 : i31, - _f_ = /*<>*/ i31 + 2 | 0, - _f_ = /*<>*/ caml_check_bound(a, _f_)[_f_ + 1], + _f_ = /*<>*/ i31 + 2 | 0, + _f_ = /*<>*/ caml_check_bound(a, _f_)[_f_ + 1], x$0 = - /*<>*/ /*<>*/ caml_call2 - (cmp, /*<>*/ caml_check_bound(a, x)[x + 1], _f_) + /*<>*/ /*<>*/ caml_call2 + (cmp, /*<>*/ caml_check_bound(a, x)[x + 1], _f_) < 0 ? i31 + 2 | 0 : x; - /*<>*/ return x$0; + /*<>*/ return x$0; } - /*<>*/ if((i31 + 1 | 0) < l){ + /*<>*/ if((i31 + 1 | 0) < l){ _f_ = i31 + 1 | 0; - /*<>*/ _f_ = caml_check_bound(a, _f_)[_f_ + 1]; - /*<>*/ if + /*<>*/ _f_ = caml_check_bound(a, _f_)[_f_ + 1]; + /*<>*/ if (0 > - /*<>*/ caml_call2 + /*<>*/ caml_call2 (cmp, - /*<>*/ caml_check_bound(a, i31)[i31 + 1], + /*<>*/ caml_check_bound(a, i31)[i31 + 1], _f_)) - /*<>*/ return i31 + 1 | 0; + /*<>*/ return i31 + 1 | 0; } - /*<>*/ if(i31 < l) /*<>*/ return i31; - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(i31 < l) /*<>*/ return i31; + /*<>*/ throw caml_maybe_attach_backtrace ([0, Bottom, i], 1); - /*<>*/ } + /*<>*/ } var - l = /*<>*/ a.length - 1, - _f_ = /*<>*/ ((l + 1 | 0) / 3 | 0) - 1 | 0; + l = /*<>*/ a.length - 1, + _f_ = /*<>*/ ((l + 1 | 0) / 3 | 0) - 1 | 0; if(_f_ >= 0){ var i$5 = _f_; for(;;){ - var e$1 = /*<>*/ caml_check_bound(a, i$5)[i$5 + 1]; - /*<>*/ try{ + var e$1 = /*<>*/ caml_check_bound(a, i$5)[i$5 + 1]; + /*<>*/ try{ var i = i$5; for(;;){ - var j = /*<>*/ maxson(l, i); - /*<>*/ if + var j = /*<>*/ maxson(l, i); + /*<>*/ if (0 >= - /*<>*/ caml_call2 - (cmp, /*<>*/ caml_check_bound(a, j)[j + 1], e$1)){ - /*<>*/ caml_check_bound(a, i)[i + 1] = e$1; + /*<>*/ caml_call2 + (cmp, /*<>*/ caml_check_bound(a, j)[j + 1], e$1)){ + /*<>*/ caml_check_bound(a, i)[i + 1] = e$1; break; } - /*<>*/ _f_ = caml_check_bound(a, j)[j + 1]; - /*<>*/ caml_check_bound(a, i)[i + 1] = _f_; - /*<>*/ i = j; + /*<>*/ _f_ = caml_check_bound(a, j)[j + 1]; + /*<>*/ caml_check_bound(a, i)[i + 1] = _f_; + /*<>*/ i = j; } } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn[1] !== Bottom) throw caml_maybe_attach_backtrace(exn, 0); var i$0 = exn[2]; - /*<>*/ caml_check_bound(a, i$0)[i$0 + 1] = e$1; + /*<>*/ caml_check_bound(a, i$0)[i$0 + 1] = e$1; } - /*<>*/ _f_ = i$5 - 1 | 0; + /*<>*/ _f_ = i$5 - 1 | 0; if(0 === i$5) break; i$5 = _f_; } } - /*<>*/ _f_ = l - 1 | 0; + /*<>*/ _f_ = l - 1 | 0; if(_f_ >= 2){ var i$4 = _f_; a: for(;;){ - var e$0 = /*<>*/ caml_check_bound(a, i$4)[i$4 + 1]; - /*<>*/ a[i$4 + 1] = caml_check_bound(a, 0)[1]; - /*<>*/ try{ + var e$0 = /*<>*/ caml_check_bound(a, i$4)[i$4 + 1]; + /*<>*/ a[i$4 + 1] = caml_check_bound(a, 0)[1]; + /*<>*/ try{ var i$1 = 0; for(;;){ var - j$0 = /*<>*/ maxson(i$4, i$1), - _f_ = /*<>*/ caml_check_bound(a, j$0)[j$0 + 1]; - /*<>*/ caml_check_bound(a, i$1)[i$1 + 1] = _f_; - /*<>*/ i$1 = j$0; + j$0 = /*<>*/ maxson(i$4, i$1), + _f_ = /*<>*/ caml_check_bound(a, j$0)[j$0 + 1]; + /*<>*/ caml_check_bound(a, i$1)[i$1 + 1] = _f_; + /*<>*/ i$1 = j$0; } } catch(exn){ var exn$0 = /*<>*/ caml_wrap_exception(exn); if(exn$0[1] !== Bottom) throw caml_maybe_attach_backtrace(exn$0, 0); - var i$2 = exn$0[2], i$3 = /*<>*/ i$2; + var i$2 = exn$0[2], i$3 = /*<>*/ i$2; for(;;){ - var father = /*<>*/ (i$3 - 1 | 0) / 3 | 0; - /*<>*/ if(i$3 === father) + var father = /*<>*/ (i$3 - 1 | 0) / 3 | 0; + /*<>*/ if(i$3 === father) throw caml_maybe_attach_backtrace([0, Assert_failure, _a_], 1); - /*<>*/ if + /*<>*/ if (0 <= - /*<>*/ caml_call2 + /*<>*/ caml_call2 (cmp, - /*<>*/ caml_check_bound(a, father)[father + 1], + /*<>*/ caml_check_bound(a, father)[father + 1], e$0)) - /*<>*/ caml_check_bound(a, i$3)[i$3 + 1] = e$0; + /*<>*/ caml_check_bound(a, i$3)[i$3 + 1] = e$0; else{ - /*<>*/ _f_ = + /*<>*/ _f_ = caml_check_bound(a, father)[father + 1]; - /*<>*/ caml_check_bound(a, i$3)[i$3 + 1] = _f_; - /*<>*/ if(0 < father){i$3 = father; continue;} - /*<>*/ caml_check_bound(a, 0)[1] = e$0; + /*<>*/ caml_check_bound(a, i$3)[i$3 + 1] = _f_; + /*<>*/ if(0 < father){i$3 = father; continue;} + /*<>*/ caml_check_bound(a, 0)[1] = e$0; } - /*<>*/ _f_ = i$4 - 1 | 0; + /*<>*/ _f_ = i$4 - 1 | 0; if(2 === i$4) break a; i$4 = _f_; break; @@ -6028,213 +6336,225 @@ } } } - /*<>*/ _f_ = 1 < l ? 1 : 0; + /*<>*/ _f_ = 1 < l ? 1 : 0; if(_f_){ - var e = /*<>*/ caml_check_bound(a, 1)[2]; - /*<>*/ a[2] = caml_check_bound(a, 0)[1]; - /*<>*/ a[1] = e; - /*<>*/ _f_ = 0; - } - /*<>*/ return _f_; - /*<>*/ } - function stable_sort(cmp, a){ + var e = /*<>*/ caml_check_bound(a, 1)[2]; + /*<>*/ a[2] = caml_check_bound(a, 0)[1]; + /*<>*/ a[1] = e; + /*<>*/ _f_ = 0; + } + /*<>*/ return _f_; + /*<>*/ } + function unsafe_stable_sort_sub(cmp, a, init_ofs, init_len){ function merge(src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs){ var - src1r = /*<>*/ src1ofs + src1len | 0, + src1r = /*<>*/ src1ofs + src1len | 0, src2r = src2ofs + src2len | 0, s2$1 = - /*<>*/ caml_check_bound(src2, src2ofs)[src2ofs + 1], + /*<>*/ caml_check_bound(src2, src2ofs)[src2ofs + 1], s1$1 = - /*<>*/ caml_check_bound(a, src1ofs)[src1ofs + 1], - i1 = /*<>*/ src1ofs, + /*<>*/ caml_check_bound(a, src1ofs)[src1ofs + 1], + i1 = /*<>*/ src1ofs, s1 = s1$1, i2 = src2ofs, s2 = s2$1, d = dstofs; for(;;) - /*<>*/ if(0 < caml_call2(cmp, s1, s2)){ - /*<>*/ caml_check_bound(dst, d)[d + 1] = s2; - var i2$0 = /*<>*/ i2 + 1 | 0; - /*<>*/ if(i2$0 >= src2r) - /*<>*/ return blit - (a, i1, dst, d + 1 | 0, src1r - i1 | 0) /*<>*/ ; + /*<>*/ if(0 < caml_call2(cmp, s1, s2)){ + /*<>*/ caml_check_bound(dst, d)[d + 1] = s2; + var i2$0 = /*<>*/ i2 + 1 | 0; + /*<>*/ if(i2$0 >= src2r) + /*<>*/ return blit + (a, i1, dst, d + 1 | 0, src1r - i1 | 0) /*<>*/ ; var - d$0 = /*<>*/ d + 1 | 0, - s2$0 = /*<>*/ caml_check_bound(src2, i2$0)[i2$0 + 1]; - /*<>*/ i2 = i2$0; + d$0 = /*<>*/ d + 1 | 0, + s2$0 = /*<>*/ caml_check_bound(src2, i2$0)[i2$0 + 1]; + /*<>*/ i2 = i2$0; s2 = s2$0; d = d$0; } else{ - /*<>*/ caml_check_bound(dst, d)[d + 1] = s1; - var i1$0 = /*<>*/ i1 + 1 | 0; - /*<>*/ if(i1$0 >= src1r) - /*<>*/ return blit - (src2, i2, dst, d + 1 | 0, src2r - i2 | 0) /*<>*/ ; + /*<>*/ caml_check_bound(dst, d)[d + 1] = s1; + var i1$0 = /*<>*/ i1 + 1 | 0; + /*<>*/ if(i1$0 >= src1r) + /*<>*/ return blit + (src2, i2, dst, d + 1 | 0, src2r - i2 | 0) /*<>*/ ; var - d$1 = /*<>*/ d + 1 | 0, - s1$0 = /*<>*/ caml_check_bound(a, i1$0)[i1$0 + 1]; - /*<>*/ i1 = i1$0; + d$1 = /*<>*/ d + 1 | 0, + s1$0 = /*<>*/ caml_check_bound(a, i1$0)[i1$0 + 1]; + /*<>*/ i1 = i1$0; s1 = s1$0; d = d$1; } - /*<>*/ } + /*<>*/ } function isortto(srcofs, dst, dstofs, len){ - var _f_ = /*<>*/ len - 1 | 0; + var _f_ = /*<>*/ len - 1 | 0; if(_f_ >= 0){ var i = 0; a: for(;;){ var - _e_ = /*<>*/ srcofs + i | 0, - e = /*<>*/ caml_check_bound(a, _e_)[_e_ + 1], - j = /*<>*/ (dstofs + i | 0) - 1 | 0; + _e_ = /*<>*/ srcofs + i | 0, + e = /*<>*/ caml_check_bound(a, _e_)[_e_ + 1], + j = /*<>*/ (dstofs + i | 0) - 1 | 0; for(;;){ if (dstofs <= j && 0 < - /*<>*/ caml_call2 + /*<>*/ caml_call2 (cmp, - /*<>*/ caml_check_bound(dst, j)[j + 1], + /*<>*/ caml_check_bound(dst, j)[j + 1], e)){ - /*<>*/ _e_ = j + 1 | 0; - var _d_ = /*<>*/ caml_check_bound(dst, j)[j + 1]; - /*<>*/ caml_check_bound(dst, _e_)[_e_ + 1] = _d_; - var j$0 = /*<>*/ j - 1 | 0; + /*<>*/ _e_ = j + 1 | 0; + var _d_ = /*<>*/ caml_check_bound(dst, j)[j + 1]; + /*<>*/ caml_check_bound(dst, _e_)[_e_ + 1] = _d_; + var j$0 = /*<>*/ j - 1 | 0; j = j$0; continue; } - /*<>*/ _d_ = j + 1 | 0; + /*<>*/ _d_ = j + 1 | 0; caml_check_bound(dst, _d_)[_d_ + 1] = e; - /*<>*/ _d_ = i + 1 | 0; + /*<>*/ _d_ = i + 1 | 0; if(_f_ === i) break a; i = _d_; break; } } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function sortto(srcofs, dst, dstofs, len){ - /*<>*/ if(len <= 5) - /*<>*/ return isortto(srcofs, dst, dstofs, len) /*<>*/ ; + /*<>*/ if(len <= 5) + /*<>*/ return isortto(srcofs, dst, dstofs, len) /*<>*/ ; var - l1 = /*<>*/ len / 2 | 0, - l2 = /*<>*/ len - l1 | 0; - /*<>*/ sortto(srcofs + l1 | 0, dst, dstofs + l1 | 0, l2); - /*<>*/ sortto(srcofs, a, srcofs + l2 | 0, l1); - /*<>*/ return merge - (srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs) /*<>*/ ; - } - var l = /*<>*/ a.length - 1; - /*<>*/ if(l <= 5) - /*<>*/ return isortto(0, a, 0, l) /*<>*/ ; - var - l1 = /*<>*/ l / 2 | 0, - l2 = /*<>*/ l - l1 | 0, + l1 = /*<>*/ len / 2 | 0, + l2 = /*<>*/ len - l1 | 0; + /*<>*/ sortto(srcofs + l1 | 0, dst, dstofs + l1 | 0, l2); + /*<>*/ sortto(srcofs, a, srcofs + l2 | 0, l1); + /*<>*/ return merge + (srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs) /*<>*/ ; + } + /*<>*/ if(init_len <= 5) + /*<>*/ return isortto(init_ofs, a, init_ofs, init_len) /*<>*/ ; + var + l1 = /*<>*/ init_len / 2 | 0, + l2 = /*<>*/ init_len - l1 | 0, t = /*<>*/ /*<>*/ caml_array_make - (l2, /*<>*/ caml_check_bound(a, 0)[1]); - /*<>*/ sortto(l1, t, 0, l2); - /*<>*/ sortto(0, a, l2, l1); - /*<>*/ return merge(l2, l1, t, 0, l2, a, 0) /*<>*/ ; + (l2, + /*<>*/ caml_check_bound(a, init_ofs)[init_ofs + 1]); + /*<>*/ sortto(init_ofs + l1 | 0, t, 0, l2); + /*<>*/ sortto(init_ofs, a, init_ofs + l2 | 0, l1); + /*<>*/ return merge + (init_ofs + l2 | 0, l1, t, 0, l2, a, init_ofs) /*<>*/ ; + } + function stable_sort_sub(cmp, a, ofs, len){ + /*<>*/ if + (0 <= ofs && 0 <= len && (a.length - 1 - len | 0) >= ofs) + /*<>*/ return unsafe_stable_sort_sub(cmp, a, ofs, len) /*<>*/ ; + /*<>*/ return Stdlib[1].call + (null, "Array.stable_sort_sub") /*<>*/ ; + } + function stable_sort(cmp, a){ + /*<>*/ return unsafe_stable_sort_sub + (cmp, a, 0, a.length - 1) /*<>*/ ; } function shuffle(rand, a){ - var _c_ = /*<>*/ a.length - 2 | 0; + var _c_ = /*<>*/ a.length - 2 | 0; if(_c_ >= 1){ var i = _c_; for(;;){ var - j = /*<>*/ caml_call1(rand, i + 1 | 0), - _c_ = /*<>*/ 0 <= j, + j = /*<>*/ caml_call1(rand, i + 1 | 0), + _c_ = /*<>*/ 0 <= j, _c_ = _c_ ? j <= i : _c_; if(1 - _c_){ var - int = /*<>*/ Stdlib[33], - _c_ = /*<>*/ int(i), + int = /*<>*/ Stdlib[33], + _c_ = /*<>*/ int(i), _c_ = Stdlib[28].call(null, _c_, "]"), _c_ = - /*<>*/ Stdlib[28].call + /*<>*/ Stdlib[28].call (null, ", out of expected range [0; ", _c_), - _d_ = /*<>*/ int(j), + _d_ = /*<>*/ int(j), _c_ = Stdlib[28].call(null, _d_, _c_), _c_ = - /*<>*/ Stdlib[28].call(null, "' returned ", _c_), - _d_ = /*<>*/ int(i + 1 | 0), + /*<>*/ Stdlib[28].call(null, "' returned ", _c_), + _d_ = /*<>*/ int(i + 1 | 0), _c_ = Stdlib[28].call(null, _d_, _c_), _c_ = - /*<>*/ Stdlib[28].call + /*<>*/ Stdlib[28].call (null, "Array.shuffle: 'rand ", _c_); - /*<>*/ Stdlib[1].call(null, _c_); + /*<>*/ Stdlib[1].call(null, _c_); } - var v = /*<>*/ a[i + 1]; - /*<>*/ a[i + 1] = a[j + 1]; - /*<>*/ a[j + 1] = v; - /*<>*/ _c_ = i - 1 | 0; + var v = /*<>*/ a[i + 1]; + /*<>*/ a[i + 1] = a[j + 1]; + /*<>*/ a[j + 1] = v; + /*<>*/ _c_ = i - 1 | 0; if(1 === i) break; i = _c_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function to_seq(a){ function aux(i, param){ - /*<>*/ if(i >= a.length - 1) - /*<>*/ return 0; + /*<>*/ if(i >= a.length - 1) + /*<>*/ return 0; var - x = /*<>*/ a[i + 1], - _b_ = /*<>*/ i + 1 | 0; - /*<>*/ return [0, + x = /*<>*/ a[i + 1], + _b_ = /*<>*/ i + 1 | 0; + /*<>*/ return [0, x, - function(_c_){ /*<>*/ return aux(_b_, _c_);}] /*<>*/ ; - /*<>*/ } - /*<>*/ return function(_b_){ - /*<>*/ return aux(0, _b_);} /*<>*/ ; - /*<>*/ } + function(_c_){ /*<>*/ return aux(_b_, _c_);}] /*<>*/ ; + /*<>*/ } + /*<>*/ return function(_b_){ + /*<>*/ return aux(0, _b_);} /*<>*/ ; + /*<>*/ } function to_seqi(a){ function aux(i, param){ - /*<>*/ if(i >= a.length - 1) - /*<>*/ return 0; + /*<>*/ if(i >= a.length - 1) + /*<>*/ return 0; var - x = /*<>*/ a[i + 1], - _a_ = /*<>*/ i + 1 | 0; - /*<>*/ return [0, + x = /*<>*/ a[i + 1], + _a_ = /*<>*/ i + 1 | 0; + /*<>*/ return [0, [0, i, x], - function(_b_){ /*<>*/ return aux(_a_, _b_);}] /*<>*/ ; - /*<>*/ } - /*<>*/ return function(_a_){ - /*<>*/ return aux(0, _a_);} /*<>*/ ; - /*<>*/ } + function(_b_){ /*<>*/ return aux(_a_, _b_);}] /*<>*/ ; + /*<>*/ } + /*<>*/ return function(_a_){ + /*<>*/ return aux(0, _a_);} /*<>*/ ; + /*<>*/ } function of_seq(i$2){ var l = - /*<>*/ Stdlib_Seq[5].call + /*<>*/ Stdlib_Seq[5].call (null, function(acc, x){ - /*<>*/ return [0, x, acc]; - /*<>*/ }, + /*<>*/ return [0, x, acc]; + /*<>*/ }, 0, i$2); - /*<>*/ if(! l) /*<>*/ return [0]; + /*<>*/ if(! l) /*<>*/ return [0]; var - tl = /*<>*/ l[2], + tl = /*<>*/ l[2], hd = l[1], - len = /*<>*/ list_length(0, l), - a = /*<>*/ caml_array_make(len, hd), - i$1 = /*<>*/ len - 2 | 0, + len = /*<>*/ list_length(0, l), + a = /*<>*/ caml_array_make(len, hd), + i$1 = /*<>*/ len - 2 | 0, i = i$1, param = tl; for(;;){ - /*<>*/ if(! param) /*<>*/ return a; - var tl$0 = /*<>*/ param[2], hd$0 = param[1]; - /*<>*/ a[i + 1] = hd$0; - var i$0 = /*<>*/ i - 1 | 0; + /*<>*/ if(! param) /*<>*/ return a; + var tl$0 = /*<>*/ param[2], hd$0 = param[1]; + /*<>*/ a[i + 1] = hd$0; + var i$0 = /*<>*/ i - 1 | 0; i = i$0; param = tl$0; } - /*<>*/ } + /*<>*/ } var Stdlib_Array = /*<>*/ [0, @@ -6276,6 +6596,7 @@ combine, sort, stable_sort, + stable_sort_sub, stable_sort, shuffle, to_seq, @@ -6736,7 +7057,7 @@ /*<>*/ return lift_sort(Stdlib_Array[38], cmp, iarr) /*<>*/ ; } function fast_sort(cmp, iarr){ - /*<>*/ return lift_sort(Stdlib_Array[39], cmp, iarr) /*<>*/ ; + /*<>*/ return lift_sort(Stdlib_Array[40], cmp, iarr) /*<>*/ ; } function to_seq(a){ function aux(i, param){ @@ -6767,7 +7088,7 @@ /*<>*/ return aux(0, _a_);} /*<>*/ ; /*<>*/ } function of_seq(i){ - /*<>*/ return Stdlib_Array[43].call(null, i) /*<>*/ ; + /*<>*/ return Stdlib_Array[44].call(null, i) /*<>*/ ; } var Stdlib_Iarray = @@ -6936,7 +7257,7 @@ else{ /*<>*/ dstoff = 0; srcoff = - left | 0;} var cpylen = - /*<>*/ /*<>*/ Stdlib_Int[10].call + /*<>*/ /*<>*/ Stdlib_Int[14].call (null, /*<>*/ caml_ml_bytes_length(s) - srcoff | 0, len - dstoff | 0); @@ -7576,10 +7897,10 @@ /*<>*/ if(n[1] === caml_ml_bytes_length(buf[1])){ var new_len = - /*<>*/ /*<>*/ Stdlib_Int[10].call + /*<>*/ /*<>*/ Stdlib_Int[14].call (null, 2 * /*<>*/ caml_ml_bytes_length(buf[1]) | 0, - Stdlib_Sys[13]); + Stdlib_Sys[14]); /*<>*/ if(caml_ml_bytes_length(buf[1]) === new_len) /*<>*/ Stdlib[2].call (null, "Bytes.of_seq: cannot grow bytes"); @@ -7595,121 +7916,121 @@ /*<>*/ return sub(buf[1], 0, n[1]) /*<>*/ ; } function unsafe_get_uint16_le(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bswap16 ( /*<>*/ caml_bytes_get16(b, i)) : /*<>*/ caml_bytes_get16(b, i) /*<>*/ ; } function unsafe_get_uint16_be(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_get16(b, i) : /*<>*/ caml_bswap16 ( /*<>*/ caml_bytes_get16(b, i)) /*<>*/ ; } function get_int8(b, i){ var - _l_ = /*<>*/ Stdlib_Sys[11] - 8 | 0, - _m_ = Stdlib_Sys[11] - 8 | 0; + _l_ = /*<>*/ Stdlib_Sys[12] - 8 | 0, + _m_ = Stdlib_Sys[12] - 8 | 0; return caml_bytes_get(b, i) << _m_ >> _l_ /*<>*/ ; /*<>*/ } function get_uint16_le(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bswap16 ( /*<>*/ caml_bytes_get16(b, i)) : /*<>*/ caml_bytes_get16(b, i) /*<>*/ ; } function get_uint16_be(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_get16(b, i) : /*<>*/ caml_bswap16 ( /*<>*/ caml_bytes_get16(b, i)) /*<>*/ ; } function get_int16_ne(b, i){ var - _k_ = /*<>*/ Stdlib_Sys[11] - 16 | 0, - _l_ = Stdlib_Sys[11] - 16 | 0; + _k_ = /*<>*/ Stdlib_Sys[12] - 16 | 0, + _l_ = Stdlib_Sys[12] - 16 | 0; return caml_bytes_get16(b, i) << _l_ >> _k_ /*<>*/ ; /*<>*/ } function get_int16_le(b, i){ var - _j_ = /*<>*/ Stdlib_Sys[11] - 16 | 0, - _k_ = Stdlib_Sys[11] - 16 | 0; + _j_ = /*<>*/ Stdlib_Sys[12] - 16 | 0, + _k_ = Stdlib_Sys[12] - 16 | 0; return get_uint16_le(b, i) << _k_ >> _j_ /*<>*/ ; /*<>*/ } function get_int16_be(b, i){ var - _i_ = /*<>*/ Stdlib_Sys[11] - 16 | 0, - _j_ = Stdlib_Sys[11] - 16 | 0; + _i_ = /*<>*/ Stdlib_Sys[12] - 16 | 0, + _j_ = Stdlib_Sys[12] - 16 | 0; return get_uint16_be(b, i) << _j_ >> _i_ /*<>*/ ; /*<>*/ } function get_int32_le(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_int32_bswap ( /*<>*/ caml_bytes_get32(b, i)) : /*<>*/ caml_bytes_get32(b, i) /*<>*/ ; } function get_int32_be(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_get32(b, i) : /*<>*/ caml_int32_bswap ( /*<>*/ caml_bytes_get32(b, i)) /*<>*/ ; } function get_int64_le(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_int64_bswap ( /*<>*/ caml_bytes_get64(b, i)) : /*<>*/ caml_bytes_get64(b, i) /*<>*/ ; } function get_int64_be(b, i){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_get64(b, i) : /*<>*/ caml_int64_bswap ( /*<>*/ caml_bytes_get64(b, i)) /*<>*/ ; } function unsafe_set_uint16_le(b, i, x){ - /*<>*/ if(Stdlib_Sys[12]){ + /*<>*/ if(Stdlib_Sys[13]){ /*<>*/ caml_bytes_set16(b, i, caml_bswap16(x)); /*<>*/ return; } /*<>*/ caml_bytes_set16(b, i, x); /*<>*/ } function unsafe_set_uint16_be(b, i, x){ - /*<>*/ if(Stdlib_Sys[12]){ + /*<>*/ if(Stdlib_Sys[13]){ /*<>*/ caml_bytes_set16(b, i, x); /*<>*/ return; } /*<>*/ caml_bytes_set16(b, i, caml_bswap16(x)); /*<>*/ } function set_int16_le(b, i, x){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_set16(b, i, caml_bswap16(x)) : /*<>*/ caml_bytes_set16(b, i, x) /*<>*/ ; } function set_int16_be(b, i, x){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_set16(b, i, x) : /*<>*/ caml_bytes_set16(b, i, caml_bswap16(x)) /*<>*/ ; } function set_int32_le(b, i, x){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_set32 (b, i, /*<>*/ caml_int32_bswap(x)) : /*<>*/ caml_bytes_set32(b, i, x) /*<>*/ ; } function set_int32_be(b, i, x){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_set32(b, i, x) : /*<>*/ caml_bytes_set32 (b, i, /*<>*/ caml_int32_bswap(x)) /*<>*/ ; } function set_int64_le(b, i, x){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_set64 (b, i, /*<>*/ caml_int64_bswap(x)) : /*<>*/ caml_bytes_set64(b, i, x) /*<>*/ ; } function set_int64_be(b, i, x){ - /*<>*/ return Stdlib_Sys[12] + /*<>*/ return Stdlib_Sys[13] ? /*<>*/ caml_bytes_set64(b, i, x) : /*<>*/ caml_bytes_set64 (b, i, /*<>*/ caml_int64_bswap(x)) /*<>*/ ; @@ -8352,8 +8673,8 @@ (globalThis)); //# unitInfo: Provides: Stdlib__String -//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Bytes, Stdlib__Int, Stdlib__List, Stdlib__Uchar -//# shape: Stdlib__String:[F(2),F(2),N,F(1),F(1),F(5),F(2),F(2)*,F(2)*,F(2)*,F(2),F(2),F(3),F(3),F(2),F(3),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(2),F(3),F(3),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(1)*->F(1),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2)] +//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Bytes, Stdlib__Char, Stdlib__Int, Stdlib__List, Stdlib__Uchar +//# shape: Stdlib__String:[F(2),F(2),N,F(1),F(1),F(1),F(5),F(2),F(2)*,F(2)*,F(2)*,F(1)*,F(2),F(2),F(1)->F(1),F(3),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1)->F(1),F(1)->F(1),F(1)->F(2),F(1)->F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(2),F(2),F(1)->F(2),F(1)->F(2),F(1)->F(4),F(1)->F(4),F(1)->F(3),F(1)->F(3),F(1)->F(3),F(1)*->F(1),F(1)*->F(1),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2)] (function (globalThis){ "use strict"; @@ -8365,7 +8686,9 @@ caml_get_global = runtime.caml_get_global, caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, caml_ml_string_length = runtime.caml_ml_string_length, + caml_mul = runtime.caml_mul, caml_string_equal = runtime.caml_string_equal, + caml_string_get = runtime.caml_string_get, caml_string_hash = runtime.caml_string_hash, caml_string_unsafe_get = runtime.caml_string_unsafe_get, caml_wrap_exception = runtime.caml_wrap_exception; @@ -8380,12 +8703,14 @@ : runtime.caml_call_gen(f, [a0, a1]); } var + dummy = 0, Stdlib = caml_get_global("Stdlib"), Stdlib_List = caml_get_global("Stdlib__List"), Stdlib_Int = caml_get_global("Stdlib__Int"), Stdlib_Uchar = caml_get_global("Stdlib__Uchar"), Stdlib_Array = caml_get_global("Stdlib__Array"), Stdlib_Bytes = caml_get_global("Stdlib__Bytes"), + Stdlib_Char = caml_get_global("Stdlib__Char"), bts = Stdlib_Bytes[44], bos = Stdlib_Bytes[45]; function make(n, c){ @@ -8396,645 +8721,1482 @@ /*<>*/ return /*<>*/ bts ( /*<>*/ Stdlib_Bytes[2].call(null, n, f)) /*<>*/ ; } + function of_char(c){ + /*<>*/ return make(1, c) /*<>*/ ; + } var of_bytes = /*<>*/ Stdlib_Bytes[6], to_bytes = Stdlib_Bytes[5]; function sub(s, ofs, len){ - /*<>*/ if(0 === ofs && caml_ml_string_length(s) === len) - /*<>*/ return s; - var _g_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[7].call(null, _g_, ofs, len)) /*<>*/ ; + /*<>*/ if(0 === ofs && caml_ml_string_length(s) === len) + /*<>*/ return s; + var _m_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[7].call(null, _m_, ofs, len)) /*<>*/ ; } var blit = /*<>*/ Stdlib_Bytes[12], cst = ""; function concat(sep, l){ - /*<>*/ if(! l) /*<>*/ return cst; - /*<>*/ if(! l[2]){ + /*<>*/ if(! l) /*<>*/ return cst; + /*<>*/ if(! l[2]){ var s = l[1]; - /*<>*/ return s; + /*<>*/ return s; } - var seplen = /*<>*/ caml_ml_string_length(sep); + var seplen = /*<>*/ caml_ml_string_length(sep); a: { - var acc = /*<>*/ 0, _g_ = l, pos$1 = 0; + var acc = /*<>*/ 0, _m_ = l, pos$1 = 0; for(;;){ - /*<>*/ if(! _g_){_g_ = acc; break a;} - var hd = _g_[1]; - if(! _g_[2]) break; + /*<>*/ if(! _m_){_m_ = acc; break a;} + var hd = _m_[1]; + if(! _m_[2]) break; var - tl = _g_[2], + tl = _m_[2], x = - /*<>*/ (caml_ml_string_length(hd) + seplen | 0) + /*<>*/ (caml_ml_string_length(hd) + seplen | 0) + acc | 0; - /*<>*/ if(acc <= x){ + /*<>*/ if(acc <= x){ acc = x; - _g_ = tl; + _m_ = tl; } else{ - /*<>*/ acc = Stdlib[1].call(null, "String.concat"); - _g_ = tl; + /*<>*/ acc = Stdlib[1].call(null, "String.concat"); + _m_ = tl; } } - /*<>*/ _g_ = caml_ml_string_length(hd) + acc | 0; + /*<>*/ _m_ = caml_ml_string_length(hd) + acc | 0; } var - dst = /*<>*/ runtime.caml_create_bytes(_g_), - pos = /*<>*/ pos$1, - _g_ = l; + dst = /*<>*/ runtime.caml_create_bytes(_m_), + pos = /*<>*/ pos$1, + _m_ = l; for(;;){ - /*<>*/ if(_g_){ - var hd$0 = _g_[1]; - if(_g_[2]){ - var tl$0 = _g_[2]; - /*<>*/ caml_blit_string + /*<>*/ if(_m_){ + var hd$0 = _m_[1]; + if(_m_[2]){ + var tl$0 = _m_[2]; + /*<>*/ caml_blit_string (hd$0, 0, dst, pos, caml_ml_string_length(hd$0)); - /*<>*/ /*<>*/ caml_blit_string + /*<>*/ /*<>*/ caml_blit_string (sep, 0, dst, - pos + /*<>*/ caml_ml_string_length(hd$0) | 0, + pos + /*<>*/ caml_ml_string_length(hd$0) | 0, seplen); var pos$0 = - /*<>*/ (pos + caml_ml_string_length(hd$0) | 0) + /*<>*/ (pos + caml_ml_string_length(hd$0) | 0) + seplen | 0; pos = pos$0; - _g_ = tl$0; + _m_ = tl$0; continue; } - /*<>*/ caml_blit_string + /*<>*/ caml_blit_string (hd$0, 0, dst, pos, caml_ml_string_length(hd$0)); } - /*<>*/ return bts(dst); + /*<>*/ return bts(dst); } } var cat = /*<>*/ Stdlib[28]; function iter(f, s){ - var _f_ = /*<>*/ caml_ml_string_length(s) - 1 | 0; - if(_f_ >= 0){ + var _l_ = /*<>*/ caml_ml_string_length(s) - 1 | 0; + if(_l_ >= 0){ var i = 0; for(;;){ - /*<>*/ caml_call1(f, caml_string_unsafe_get(s, i)); - var _g_ = /*<>*/ i + 1 | 0; - if(_f_ === i) break; - i = _g_; + /*<>*/ caml_call1(f, caml_string_unsafe_get(s, i)); + var _m_ = /*<>*/ i + 1 | 0; + if(_l_ === i) break; + i = _m_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function iteri(f, s){ - var _e_ = /*<>*/ caml_ml_string_length(s) - 1 | 0; - if(_e_ >= 0){ + var _k_ = /*<>*/ caml_ml_string_length(s) - 1 | 0; + if(_k_ >= 0){ var i = 0; for(;;){ - /*<>*/ caml_call2(f, i, caml_string_unsafe_get(s, i)); - var _f_ = /*<>*/ i + 1 | 0; - if(_e_ === i) break; - i = _f_; + /*<>*/ caml_call2(f, i, caml_string_unsafe_get(s, i)); + var _l_ = /*<>*/ i + 1 | 0; + if(_k_ === i) break; + i = _l_; } } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function map(f, s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[17].call(null, f, _e_)) /*<>*/ ; + var _k_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[17].call(null, f, _k_)) /*<>*/ ; } function mapi(f, s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[18].call(null, f, _e_)) /*<>*/ ; + var _k_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[18].call(null, f, _k_)) /*<>*/ ; } function fold_right(f, x, a){ - var _e_ = /*<>*/ bos(x); - /*<>*/ return Stdlib_Bytes[20].call(null, f, _e_, a) /*<>*/ ; + var _k_ = /*<>*/ bos(x); + /*<>*/ return Stdlib_Bytes[20].call(null, f, _k_, a) /*<>*/ ; } function fold_left(f, a, x){ - var _e_ = /*<>*/ bos(x); - /*<>*/ return Stdlib_Bytes[19].call(null, f, a, _e_); + var _k_ = /*<>*/ bos(x); + /*<>*/ return Stdlib_Bytes[19].call(null, f, a, _k_); } function exists(f, s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[22].call(null, f, _e_); + var _k_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[22].call(null, f, _k_); } function for_all(f, s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[21].call(null, f, _e_); + var _k_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[21].call(null, f, _k_); } - function is_space(_e_){ - /*<>*/ _e_ = _e_ - 9 | 0; + function is_space(_k_){ + /*<>*/ _k_ = _k_ - 9 | 0; a: { - if(4 < _e_ >>> 0){if(23 !== _e_) break a;} else if(2 === _e_) break a; - /*<>*/ return 1; + if(4 < _k_ >>> 0){if(23 !== _k_) break a;} else if(2 === _k_) break a; + /*<>*/ return 1; } - /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } function trim(s){ - /*<>*/ if(s === cst) - /*<>*/ return s; - /*<>*/ if + /*<>*/ if(s === cst) + /*<>*/ return s; + /*<>*/ if (! - /*<>*/ is_space - ( /*<>*/ caml_string_unsafe_get(s, 0)) + /*<>*/ is_space + ( /*<>*/ caml_string_unsafe_get(s, 0)) && ! - /*<>*/ is_space - ( /*<>*/ caml_string_unsafe_get + /*<>*/ is_space + ( /*<>*/ caml_string_unsafe_get (s, caml_ml_string_length(s) - 1 | 0))) - /*<>*/ return s; - var _e_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[23].call(null, _e_)) /*<>*/ ; + /*<>*/ return s; + var _k_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[23].call(null, _k_)) /*<>*/ ; } function escaped(s){ var - b = /*<>*/ bos(s), - b$0 = /*<>*/ Stdlib_Bytes[87].call(null, b); - /*<>*/ return b === b$0 + b = /*<>*/ bos(s), + b$0 = /*<>*/ Stdlib_Bytes[87].call(null, b); + /*<>*/ return b === b$0 ? s - : /*<>*/ bts(b$0) /*<>*/ ; + : /*<>*/ bts(b$0) /*<>*/ ; + } + var _a_ = /*<>*/ [0, "]", 0]; + function invalid_start(start, len){ + var + i = /*<>*/ Stdlib[33], + _k_ = + /*<>*/ [0, " not in range [0;", [0, i(len), _a_]], + _k_ = + /*<>*/ /*<>*/ concat + (cst, [0, "start: ", [0, /*<>*/ i(start), _k_]]); + /*<>*/ return Stdlib[1].call(null, _k_); + } + function find_first_index(sat, opt, s){ + var + start = /*<>*/ opt ? opt[1] : 0, + len = /*<>*/ caml_ml_string_length(s); + /*<>*/ if(0 <= start && start <= len){ + var i = start; + for(;;){ + if + (i < len + && + ! + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + continue; + } + /*<>*/ return i < len ? [0, i] : 0 /*<>*/ ; + } + } + /*<>*/ return invalid_start(start, len) /*<>*/ ; + } + function find_last_index(sat, start, s){ + var len = /*<>*/ caml_ml_string_length(s); + /*<>*/ if(start) + var s$0 = start[1], start$0 = /*<>*/ s$0; + else + /*<>*/ start$0 = len; + /*<>*/ if(0 <= start$0 && start$0 <= len){ + var i = /*<>*/ start$0 === len ? len - 1 | 0 : start$0; + for(;;){ + if + (0 <= i + && + ! + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i - 1 | 0; + i = i$0; + continue; + } + /*<>*/ return 0 <= i ? [0, i] : 0 /*<>*/ ; + } + } + /*<>*/ return invalid_start(start$0, len) /*<>*/ ; } function index_rec(s, lim, i$1, c){ - var i = /*<>*/ i$1; + var i = /*<>*/ i$1; for(;;){ if(lim <= i) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - /*<>*/ if(caml_string_unsafe_get(s, i) === c) - /*<>*/ return i; - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(caml_string_unsafe_get(s, i) === c) + /*<>*/ return i; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function index(s, c){ - /*<>*/ return index_rec - (s, caml_ml_string_length(s), 0, c) /*<>*/ ; + /*<>*/ return index_rec + (s, caml_ml_string_length(s), 0, c) /*<>*/ ; } function index_rec_opt(s, lim, i$1, c){ - var i = /*<>*/ i$1; + var i = /*<>*/ i$1; for(;;){ - if(lim <= i) /*<>*/ return 0; - /*<>*/ if(caml_string_unsafe_get(s, i) === c) - /*<>*/ return [0, i]; - var i$0 = /*<>*/ i + 1 | 0; + if(lim <= i) /*<>*/ return 0; + /*<>*/ if(caml_string_unsafe_get(s, i) === c) + /*<>*/ return [0, i]; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function index_opt(s, c){ - /*<>*/ return index_rec_opt - (s, caml_ml_string_length(s), 0, c) /*<>*/ ; + /*<>*/ return index_rec_opt + (s, caml_ml_string_length(s), 0, c) /*<>*/ ; } function index_from(s, i, c){ - var l = /*<>*/ caml_ml_string_length(s); - /*<>*/ if(0 <= i && l >= i) - /*<>*/ return index_rec(s, l, i, c) /*<>*/ ; - /*<>*/ return Stdlib[1].call - (null, "String.index_from / Bytes.index_from") /*<>*/ ; + var l = /*<>*/ caml_ml_string_length(s); + /*<>*/ if(0 <= i && l >= i) + /*<>*/ return index_rec(s, l, i, c) /*<>*/ ; + /*<>*/ return Stdlib[1].call + (null, "String.index_from / Bytes.index_from") /*<>*/ ; } function index_from_opt(s, i, c){ - var l = /*<>*/ caml_ml_string_length(s); - /*<>*/ if(0 <= i && l >= i) - /*<>*/ return index_rec_opt(s, l, i, c) /*<>*/ ; - /*<>*/ return Stdlib[1].call - (null, "String.index_from_opt / Bytes.index_from_opt") /*<>*/ ; + var l = /*<>*/ caml_ml_string_length(s); + /*<>*/ if(0 <= i && l >= i) + /*<>*/ return index_rec_opt(s, l, i, c) /*<>*/ ; + /*<>*/ return Stdlib[1].call + (null, "String.index_from_opt / Bytes.index_from_opt") /*<>*/ ; } function rindex_rec(s, i$1, c){ - var i = /*<>*/ i$1; + var i = /*<>*/ i$1; for(;;){ if(0 > i) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - /*<>*/ if(caml_string_unsafe_get(s, i) === c) - /*<>*/ return i; - var i$0 = /*<>*/ i - 1 | 0; + /*<>*/ if(caml_string_unsafe_get(s, i) === c) + /*<>*/ return i; + var i$0 = /*<>*/ i - 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function rindex(s, c){ - /*<>*/ return rindex_rec - (s, caml_ml_string_length(s) - 1 | 0, c) /*<>*/ ; + /*<>*/ return rindex_rec + (s, caml_ml_string_length(s) - 1 | 0, c) /*<>*/ ; } function rindex_from(s, i, c){ - /*<>*/ if(-1 <= i && caml_ml_string_length(s) > i) - /*<>*/ return rindex_rec(s, i, c) /*<>*/ ; - /*<>*/ return Stdlib[1].call - (null, "String.rindex_from / Bytes.rindex_from") /*<>*/ ; + /*<>*/ if(-1 <= i && caml_ml_string_length(s) > i) + /*<>*/ return rindex_rec(s, i, c) /*<>*/ ; + /*<>*/ return Stdlib[1].call + (null, "String.rindex_from / Bytes.rindex_from") /*<>*/ ; } function rindex_rec_opt(s, i$1, c){ - var i = /*<>*/ i$1; + var i = /*<>*/ i$1; for(;;){ - if(0 > i) /*<>*/ return 0; - /*<>*/ if(caml_string_unsafe_get(s, i) === c) - /*<>*/ return [0, i]; - var i$0 = /*<>*/ i - 1 | 0; + if(0 > i) /*<>*/ return 0; + /*<>*/ if(caml_string_unsafe_get(s, i) === c) + /*<>*/ return [0, i]; + var i$0 = /*<>*/ i - 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function rindex_opt(s, c){ - /*<>*/ return rindex_rec_opt - (s, caml_ml_string_length(s) - 1 | 0, c) /*<>*/ ; + /*<>*/ return rindex_rec_opt + (s, caml_ml_string_length(s) - 1 | 0, c) /*<>*/ ; } function rindex_from_opt(s, i, c){ - /*<>*/ if(-1 <= i && caml_ml_string_length(s) > i) - /*<>*/ return rindex_rec_opt(s, i, c) /*<>*/ ; - /*<>*/ return Stdlib[1].call - (null, "String.rindex_from_opt / Bytes.rindex_from_opt") /*<>*/ ; + /*<>*/ if(-1 <= i && caml_ml_string_length(s) > i) + /*<>*/ return rindex_rec_opt(s, i, c) /*<>*/ ; + /*<>*/ return Stdlib[1].call + (null, "String.rindex_from_opt / Bytes.rindex_from_opt") /*<>*/ ; } function contains_from(s, i, c){ - var l = /*<>*/ caml_ml_string_length(s); - /*<>*/ if(0 <= i && l >= i) - try{ /*<>*/ index_rec(s, l, i, c); return 1;} + var l = /*<>*/ caml_ml_string_length(s); + /*<>*/ if(0 <= i && l >= i) + try{ /*<>*/ index_rec(s, l, i, c); return 1;} catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); - if(exn === Stdlib[8]) /*<>*/ return 0; + if(exn === Stdlib[8]) /*<>*/ return 0; /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); } - /*<>*/ return Stdlib[1].call - (null, "String.contains_from / Bytes.contains_from") /*<>*/ ; + /*<>*/ return Stdlib[1].call + (null, "String.contains_from / Bytes.contains_from") /*<>*/ ; } function contains(s, c){ - /*<>*/ return contains_from(s, 0, c) /*<>*/ ; + /*<>*/ return contains_from(s, 0, c) /*<>*/ ; } function rcontains_from(s, i, c){ - /*<>*/ if(0 <= i && caml_ml_string_length(s) > i) - try{ /*<>*/ rindex_rec(s, i, c); return 1;} + /*<>*/ if(0 <= i && caml_ml_string_length(s) > i) + try{ /*<>*/ rindex_rec(s, i, c); return 1;} catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); - if(exn === Stdlib[8]) /*<>*/ return 0; + if(exn === Stdlib[8]) /*<>*/ return 0; /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); } - /*<>*/ return Stdlib[1].call - (null, "String.rcontains_from / Bytes.rcontains_from") /*<>*/ ; - } - function uppercase_ascii(s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[36].call(null, _e_)) /*<>*/ ; - } - function lowercase_ascii(s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[37].call(null, _e_)) /*<>*/ ; - } - function capitalize_ascii(s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[38].call(null, _e_)) /*<>*/ ; + /*<>*/ return Stdlib[1].call + (null, "String.rcontains_from / Bytes.rcontains_from") /*<>*/ ; } - function uncapitalize_ascii(s){ - var _e_ = /*<>*/ bos(s); - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[39].call(null, _e_)) /*<>*/ ; - } - function starts_with(prefix, s){ + function find_maximal_suffix_and_period(sub){ var - len_s = /*<>*/ caml_ml_string_length(s), - len_pre = caml_ml_string_length(prefix), - _e_ = /*<>*/ len_pre <= len_s ? 1 : 0; - if(! _e_) return _e_; - var i = 0; - for(;;){ - /*<>*/ if(i === len_pre) - /*<>*/ return 1; - /*<>*/ if - (caml_string_unsafe_get(s, i) !== caml_string_unsafe_get(prefix, i)) - /*<>*/ return 0; - var i$0 = /*<>*/ i + 1 | 0; - i = i$0; + sublen = /*<>*/ caml_ml_string_length(sub), + i = /*<>*/ [0, -1], + j = [0, 0], + k = [0, 1], + p = [0, 1]; + function maximal_suffix(order){ + /*<>*/ for(;;){ + if((j[1] + k[1] | 0) >= sublen) return; + var + _j_ = /*<>*/ caml_string_get(sub, i[1] + k[1] | 0), + _k_ = /*<>*/ caml_string_get(sub, j[1] + k[1] | 0), + c = + /*<>*/ /*<>*/ caml_mul + (order, + /*<>*/ Stdlib_Char[3].call(null, _k_, _j_)); + /*<>*/ if(0 <= c) + /*<>*/ if(0 < c){ + /*<>*/ i[1] = j[1]; + /*<>*/ j[1] = i[1] + 1 | 0; + /*<>*/ k[1] = 1; + /*<>*/ p[1] = 1; + } + else if(k[1] === p[1]){ + /*<>*/ j[1] = j[1] + p[1] | 0; + /*<>*/ k[1] = 1; + } + else + /*<>*/ k[1]++; + else{ + /*<>*/ j[1] = j[1] + k[1] | 0; + /*<>*/ k[1] = 1; + /*<>*/ p[1] = j[1] - i[1] | 0; + } + } + /*<>*/ } + /*<>*/ maximal_suffix(1); + var l0 = /*<>*/ i[1], p0 = p[1]; + /*<>*/ i[1] = -1; + /*<>*/ j[1] = 0; + /*<>*/ k[1] = 1; + /*<>*/ p[1] = 1; + /*<>*/ maximal_suffix(-1); + var l1 = /*<>*/ i[1], p1 = p[1]; + /*<>*/ return l1 < l0 ? [0, l0, p0] : [0, l1, p1] /*<>*/ ; + } + function is_sub_periodic(sub, _i_){ + var + p = /*<>*/ _i_[2], + l = _i_[1], + _i_ = /*<>*/ l <= p ? 1 : 0; + if(_i_){ + var i = /*<>*/ 0; + for(;;){ + if(i <= l){ + /*<>*/ _i_ = caml_string_get(sub, i + p | 0); + var _j_ = /*<>*/ caml_string_get(sub, i); + /*<>*/ if(Stdlib_Char[4].call(null, _j_, _i_)){ + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + continue; + } + } + /*<>*/ _i_ = l < i ? 1 : 0; + break; + } } - /*<>*/ } - function ends_with(suffix, s){ + /*<>*/ return _i_; + /*<>*/ } + function find(start, sub, _h_, sub_periodic, s){ var - len_s = /*<>*/ caml_ml_string_length(s), - len_suf = caml_ml_string_length(suffix), - diff = /*<>*/ len_s - len_suf | 0, - _e_ = /*<>*/ 0 <= diff ? 1 : 0; - if(! _e_) return _e_; - var i = 0; - for(;;){ - /*<>*/ if(i === len_suf) - /*<>*/ return 1; - /*<>*/ if - (caml_string_unsafe_get(s, diff + i | 0) - !== caml_string_unsafe_get(suffix, i)) - /*<>*/ return 0; - var i$0 = /*<>*/ i + 1 | 0; - i = i$0; + p = /*<>*/ _h_[2], + l = _h_[1], + slen = /*<>*/ caml_ml_string_length(s), + sublen = caml_ml_string_length(sub); + /*<>*/ if(0 <= start && start <= slen){ + var + smax = /*<>*/ slen - sublen | 0, + j = /*<>*/ [0, start]; + /*<>*/ try{ + if(sub_periodic){ + var memory = /*<>*/ -1; + for(;;){ + if(j[1] > smax){ /*<>*/ _h_ = -1; break;} + var + i = + /*<>*/ 1 + + /*<>*/ Stdlib_Int[15].call(null, l, memory) + | 0; + /*<>*/ for(;;){ + if(i >= sublen) break; + /*<>*/ _h_ = caml_string_get(s, i + j[1] | 0); + var _i_ = /*<>*/ caml_string_get(sub, i); + /*<>*/ if(! Stdlib_Char[4].call(null, _i_, _h_)) + break; + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + } + /*<>*/ if(i < sublen){ + /*<>*/ j[1] = j[1] + (i - l | 0) | 0; + /*<>*/ memory = -1; + } + else{ + var i$1 = /*<>*/ l; + for(;;){ + if(memory < i$1){ + /*<>*/ _h_ = caml_string_get(s, i$1 + j[1] | 0); + /*<>*/ _i_ = caml_string_get(sub, i$1); + /*<>*/ if(Stdlib_Char[4].call(null, _i_, _h_)){ + var i$2 = /*<>*/ i$1 - 1 | 0; + i$1 = i$2; + continue; + } + } + /*<>*/ if(i$1 <= memory) + /*<>*/ throw Stdlib[3]; + /*<>*/ j[1] = j[1] + p | 0; + /*<>*/ memory = (sublen - p | 0) - 1 | 0; + break; + } + } + } + } + else{ + var + q = + /*<>*/ 1 + + Stdlib_Int[15].call(null, l + 1 | 0, (sublen - l | 0) - 1 | 0) + | 0; + /*<>*/ for(;;){ + if(j[1] > smax){ /*<>*/ _h_ = -1; break;} + var i$3 = /*<>*/ l + 1 | 0; + for(;;){ + if(i$3 >= sublen) break; + /*<>*/ _h_ = caml_string_get(s, i$3 + j[1] | 0); + /*<>*/ _i_ = caml_string_get(sub, i$3); + /*<>*/ if(! Stdlib_Char[4].call(null, _i_, _h_)) + break; + var i$4 = /*<>*/ i$3 + 1 | 0; + i$3 = i$4; + } + /*<>*/ if(i$3 < sublen) + /*<>*/ j[1] = j[1] + (i$3 - l | 0) | 0; + else{ + var i$5 = /*<>*/ l; + for(;;){ + if(0 <= i$5){ + /*<>*/ _h_ = caml_string_get(s, i$5 + j[1] | 0); + /*<>*/ _i_ = caml_string_get(sub, i$5); + /*<>*/ if(Stdlib_Char[4].call(null, _i_, _h_)){ + var i$6 = /*<>*/ i$5 - 1 | 0; + i$5 = i$6; + continue; + } + } + /*<>*/ if(0 > i$5) + /*<>*/ throw Stdlib[3]; + /*<>*/ j[1] = j[1] + q | 0; + break; + } + } + } + } + return _h_; + } + catch(exn$0){ + var exn = /*<>*/ caml_wrap_exception(exn$0); + if(exn === Stdlib[3]) /*<>*/ return j[1]; + /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); + } } - /*<>*/ } - function hash(x){ - /*<>*/ return caml_string_hash(0, x) /*<>*/ ; + /*<>*/ return invalid_start(start, slen) /*<>*/ ; } - function split_on_char(sep, s){ + function get(s, i){ + /*<>*/ return caml_string_get + (s, (caml_ml_string_length(s) - 1 | 0) - i | 0) /*<>*/ ; + } + function rfind_maximal_suffix_and_perio(sub){ var - _d_ = /*<>*/ caml_ml_string_length(s), - _e_ = /*<>*/ caml_ml_string_length(s) - 1 | 0, - _c_ = /*<>*/ 0; - /*<>*/ if(_e_ < 0) - var j$1 = _d_, r$1 = _c_; - else{ - var j = _d_, r = _c_, i = _e_; + sublen = /*<>*/ caml_ml_string_length(sub), + i = /*<>*/ [0, -1], + j = [0, 0], + k = [0, 1], + p = [0, 1]; + function maximal_suffix(order){ + /*<>*/ for(;;){ + if((j[1] + k[1] | 0) >= sublen) return; + var + _g_ = /*<>*/ get(sub, i[1] + k[1] | 0), + _h_ = /*<>*/ get(sub, j[1] + k[1] | 0), + c = + /*<>*/ /*<>*/ caml_mul + (order, + /*<>*/ Stdlib_Char[3].call(null, _h_, _g_)); + /*<>*/ if(0 <= c) + /*<>*/ if(0 < c){ + /*<>*/ i[1] = j[1]; + /*<>*/ j[1] = i[1] + 1 | 0; + /*<>*/ k[1] = 1; + /*<>*/ p[1] = 1; + } + else if(k[1] === p[1]){ + /*<>*/ j[1] = j[1] + p[1] | 0; + /*<>*/ k[1] = 1; + } + else + /*<>*/ k[1]++; + else{ + /*<>*/ j[1] = j[1] + k[1] | 0; + /*<>*/ k[1] = 1; + /*<>*/ p[1] = j[1] - i[1] | 0; + } + } + /*<>*/ } + /*<>*/ maximal_suffix(1); + var l0 = /*<>*/ i[1], p0 = p[1]; + /*<>*/ i[1] = -1; + /*<>*/ j[1] = 0; + /*<>*/ k[1] = 1; + /*<>*/ p[1] = 1; + /*<>*/ maximal_suffix(-1); + var l1 = /*<>*/ i[1], p1 = p[1]; + /*<>*/ return l1 < l0 ? [0, l0, p0] : [0, l1, p1] /*<>*/ ; + } + function ris_sub_periodic(sub, _f_){ + var + p = /*<>*/ _f_[2], + l = _f_[1], + _f_ = /*<>*/ l <= p ? 1 : 0; + if(_f_){ + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(caml_string_unsafe_get(s, i) === sep) - var - j$0 = /*<>*/ i, - r$0 = - [0, - /*<>*/ sub(s, i + 1 | 0, (j - i | 0) - 1 | 0), - r]; - else{ /*<>*/ j$0 = j; r$0 = r;} - _c_ = i - 1 | 0; - if(0 === i){j$1 = j$0; r$1 = r$0; break;} - j = j$0; - r = r$0; - i = _c_; + if(i <= l){ + /*<>*/ _f_ = get(sub, i + p | 0); + var _g_ = /*<>*/ get(sub, i); + /*<>*/ if(Stdlib_Char[4].call(null, _g_, _f_)){ + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + continue; + } + } + /*<>*/ _f_ = l < i ? 1 : 0; + break; } } - /*<>*/ return [0, sub(s, 0, j$1), r$1] /*<>*/ ; - /*<>*/ } - var compare = /*<>*/ runtime.caml_string_compare; - function to_seq(s){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[47].call(null, _c_) /*<>*/ ; - } - function to_seqi(s){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[48].call(null, _c_) /*<>*/ ; - } - function of_seq(g){ - /*<>*/ return /*<>*/ bts - ( /*<>*/ Stdlib_Bytes[49].call(null, g)) /*<>*/ ; - } - function get_utf_8_uchar(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[50].call(null, _c_, i) /*<>*/ ; - } - function is_valid_utf_8(s){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[52].call(null, _c_); - } - function get_utf_16be_uchar(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[53].call(null, _c_, i) /*<>*/ ; - } - function is_valid_utf_16be(s){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[55].call(null, _c_); - } - function get_utf_16le_uchar(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[56].call(null, _c_, i) /*<>*/ ; - } - function is_valid_utf_16le(s){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[58].call(null, _c_); - } + /*<>*/ return _f_; + /*<>*/ } + function rfind(start, sub, _e_, rsub_periodic, s){ + var + p = /*<>*/ _e_[2], + l = _e_[1], + slen = /*<>*/ caml_ml_string_length(s), + sublen = caml_ml_string_length(sub); + /*<>*/ if(0 <= start && start <= slen){ + var + start$0 = + /*<>*/ Stdlib_Int[15].call + (null, 0, (slen - 1 | 0) - (start + (sublen - 1 | 0) | 0) | 0), + smax = /*<>*/ slen - sublen | 0, + j = /*<>*/ [0, start$0]; + /*<>*/ try{ + if(rsub_periodic){ + var memory = /*<>*/ -1; + for(;;){ + if(j[1] > smax){ /*<>*/ _e_ = -1; break;} + var + i = + /*<>*/ 1 + + /*<>*/ Stdlib_Int[15].call(null, l, memory) + | 0; + /*<>*/ for(;;){ + if(i >= sublen) break; + /*<>*/ _e_ = get(s, i + j[1] | 0); + var _f_ = /*<>*/ get(sub, i); + /*<>*/ if(! Stdlib_Char[4].call(null, _f_, _e_)) + break; + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + } + /*<>*/ if(i < sublen){ + /*<>*/ j[1] = j[1] + (i - l | 0) | 0; + /*<>*/ memory = -1; + } + else{ + var i$1 = /*<>*/ l; + for(;;){ + if(memory < i$1){ + /*<>*/ _e_ = get(s, i$1 + j[1] | 0); + /*<>*/ _f_ = get(sub, i$1); + /*<>*/ if(Stdlib_Char[4].call(null, _f_, _e_)){ + var i$2 = /*<>*/ i$1 - 1 | 0; + i$1 = i$2; + continue; + } + } + /*<>*/ if(i$1 <= memory) + /*<>*/ throw Stdlib[3]; + /*<>*/ j[1] = j[1] + p | 0; + /*<>*/ memory = (sublen - p | 0) - 1 | 0; + break; + } + } + } + } + else{ + var + q = + /*<>*/ 1 + + Stdlib_Int[15].call(null, l + 1 | 0, (sublen - l | 0) - 1 | 0) + | 0; + /*<>*/ for(;;){ + if(j[1] > smax){ /*<>*/ _e_ = -1; break;} + var i$3 = /*<>*/ l + 1 | 0; + for(;;){ + if(i$3 >= sublen) break; + /*<>*/ _e_ = get(s, i$3 + j[1] | 0); + /*<>*/ _f_ = get(sub, i$3); + /*<>*/ if(! Stdlib_Char[4].call(null, _f_, _e_)) + break; + var i$4 = /*<>*/ i$3 + 1 | 0; + i$3 = i$4; + } + /*<>*/ if(i$3 < sublen) + /*<>*/ j[1] = j[1] + (i$3 - l | 0) | 0; + else{ + var i$5 = /*<>*/ l; + for(;;){ + if(0 <= i$5){ + /*<>*/ _e_ = get(s, i$5 + j[1] | 0); + /*<>*/ _f_ = get(sub, i$5); + /*<>*/ if(Stdlib_Char[4].call(null, _f_, _e_)){ + var i$6 = /*<>*/ i$5 - 1 | 0; + i$5 = i$6; + continue; + } + } + /*<>*/ if(0 > i$5) + /*<>*/ throw Stdlib[3]; + /*<>*/ j[1] = j[1] + q | 0; + break; + } + } + } + } + return _e_; + } + catch(exn$0){ + var exn = /*<>*/ caml_wrap_exception(exn$0); + if(exn === Stdlib[3]) + /*<>*/ return (slen - 1 | 0) + - (j[1] + (sublen - 1 | 0) | 0) + | 0; + /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); + } + } + /*<>*/ return invalid_start(start, slen) /*<>*/ ; + } + function find_first(sub){ + var + sub_lp = /*<>*/ find_maximal_suffix_and_period(sub), + sub_periodic = /*<>*/ is_sub_periodic(sub, sub_lp); + /*<>*/ return function(opt, s){ + var + start = opt ? opt[1] : 0, + i = /*<>*/ find(start, sub, sub_lp, sub_periodic, s); + /*<>*/ return -1 === i ? 0 : [0, i] /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function find_last(sub){ + var + rsub_lp = /*<>*/ rfind_maximal_suffix_and_perio(sub), + rsub_periodic = /*<>*/ ris_sub_periodic(sub, rsub_lp); + /*<>*/ return function(start, s){ + /*<>*/ if(start) + var s$0 = start[1], start$0 = /*<>*/ s$0; + else + /*<>*/ start$0 = caml_ml_string_length(s); + var + i = + /*<>*/ rfind + (start$0, sub, rsub_lp, rsub_periodic, s); + /*<>*/ return -1 === i ? 0 : [0, i] /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function find_all(sub){ + var + sub_lp = /*<>*/ find_maximal_suffix_and_period(sub), + sub_periodic = /*<>*/ is_sub_periodic(sub, sub_lp); + /*<>*/ return function(f, opt, s, acc){ + var + start = opt ? opt[1] : 0, + slen = /*<>*/ caml_ml_string_length(s); + /*<>*/ if(0 <= start && start <= slen){ + var acc$0 = acc, start$0 = start; + for(;;){ + /*<>*/ if(slen < start$0) + /*<>*/ return acc$0; + var + i = + /*<>*/ find + (start$0, sub, sub_lp, sub_periodic, s); + /*<>*/ if(-1 === i) + /*<>*/ return acc$0; + var + start$1 = + /*<>*/ i + + + /*<>*/ Stdlib_Int[15].call + (null, /*<>*/ caml_ml_string_length(sub), 1) + | 0, + acc$1 = /*<>*/ caml_call2(f, i, acc$0); + /*<>*/ acc$0 = acc$1; + start$0 = start$1; + } + } + /*<>*/ return invalid_start(start, slen) /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function rfind_all(sub){ + var + rsub_lp = /*<>*/ rfind_maximal_suffix_and_perio(sub), + rsub_periodic = /*<>*/ ris_sub_periodic(sub, rsub_lp); + /*<>*/ return function(f, start, s, acc){ + var slen = /*<>*/ caml_ml_string_length(s); + /*<>*/ if(start) + var s$0 = start[1], start$2 = /*<>*/ s$0; + else + /*<>*/ start$2 = caml_ml_string_length(s); + /*<>*/ if(0 <= start$2 && start$2 <= slen){ + var acc$0 = acc, start$0 = start$2; + for(;;){ + /*<>*/ if(0 > start$0) + /*<>*/ return acc$0; + var + i = + /*<>*/ rfind + (start$0, sub, rsub_lp, rsub_periodic, s); + /*<>*/ if(-1 === i) + /*<>*/ return acc$0; + var + start$1 = + /*<>*/ i + - + /*<>*/ Stdlib_Int[15].call + (null, /*<>*/ caml_ml_string_length(sub), 1) + | 0, + acc$1 = /*<>*/ caml_call2(f, i, acc$0); + /*<>*/ acc$0 = acc$1; + start$0 = start$1; + } + } + /*<>*/ return invalid_start(start$2, slen) /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function replace_first(needle){ + var find_first$0 = /*<>*/ find_first(needle); + /*<>*/ return function(by, start, s){ + var _e_ = /*<>*/ find_first$0(start, s); + /*<>*/ if(! _e_) /*<>*/ return s; + var + i = /*<>*/ _e_[1], + rest_first = + /*<>*/ i + caml_ml_string_length(needle) | 0, + rest_len = + /*<>*/ (caml_ml_string_length(s) - i | 0) + - caml_ml_string_length(needle) + | 0, + _e_ = /*<>*/ [0, sub(s, rest_first, rest_len), 0]; + /*<>*/ return /*<>*/ concat + (by, [0, /*<>*/ sub(s, 0, i), _e_]) /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function replace_last(needle){ + var find_last$0 = /*<>*/ find_last(needle); + /*<>*/ return function(by, start, s){ + var _e_ = /*<>*/ find_last$0(start, s); + /*<>*/ if(! _e_) /*<>*/ return s; + var + i = /*<>*/ _e_[1], + rest_first = + /*<>*/ i + caml_ml_string_length(needle) | 0, + rest_len = + /*<>*/ (caml_ml_string_length(s) - i | 0) + - caml_ml_string_length(needle) + | 0, + _e_ = /*<>*/ [0, sub(s, rest_first, rest_len), 0]; + /*<>*/ return /*<>*/ concat + (by, [0, /*<>*/ sub(s, 0, i), _e_]) /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function replace_all(needle){ + var find_all$0 = /*<>*/ find_all(needle); + /*<>*/ return function(by, start, s){ + var chunk_first = /*<>*/ [0, 0]; + function add_chunk(i, acc){ + var + acc$0 = + /*<>*/ [0, + sub(s, chunk_first[1], i - chunk_first[1] | 0), + acc]; + /*<>*/ chunk_first[1] = + i + caml_ml_string_length(needle) | 0; + /*<>*/ return acc$0; + /*<>*/ } + var + chunks = /*<>*/ find_all$0(add_chunk, start, s, 0); + /*<>*/ if(! chunks) + /*<>*/ return s; + var + chunks$0 = + /*<>*/ [0, + /*<>*/ sub + (s, + chunk_first[1], + /*<>*/ caml_ml_string_length(s) - chunk_first[1] + | 0), + chunks]; + /*<>*/ return /*<>*/ concat + (by, + /*<>*/ Stdlib_List[11].call(null, chunks$0)) /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function uppercase_ascii(s){ + var _e_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[36].call(null, _e_)) /*<>*/ ; + } + function lowercase_ascii(s){ + var _e_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[37].call(null, _e_)) /*<>*/ ; + } + function capitalize_ascii(s){ + var _e_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[38].call(null, _e_)) /*<>*/ ; + } + function uncapitalize_ascii(s){ + var _e_ = /*<>*/ bos(s); + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[39].call(null, _e_)) /*<>*/ ; + } + function starts_with(prefix, s){ + var + len_s = /*<>*/ caml_ml_string_length(s), + len_pre = caml_ml_string_length(prefix), + _e_ = /*<>*/ len_pre <= len_s ? 1 : 0; + if(! _e_) return _e_; + var i = 0; + for(;;){ + /*<>*/ if(i === len_pre) + /*<>*/ return 1; + /*<>*/ if + (caml_string_unsafe_get(s, i) !== caml_string_unsafe_get(prefix, i)) + /*<>*/ return 0; + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + } + /*<>*/ } + function ends_with(suffix, s){ + var + len_s = /*<>*/ caml_ml_string_length(s), + len_suf = caml_ml_string_length(suffix), + diff = /*<>*/ len_s - len_suf | 0, + _e_ = /*<>*/ 0 <= diff ? 1 : 0; + if(! _e_) return _e_; + var i = 0; + for(;;){ + /*<>*/ if(i === len_suf) + /*<>*/ return 1; + /*<>*/ if + (caml_string_unsafe_get(s, diff + i | 0) + !== caml_string_unsafe_get(suffix, i)) + /*<>*/ return 0; + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + } + /*<>*/ } + function includes(sub){ + var + sub_lp = /*<>*/ find_maximal_suffix_and_period(sub), + sub_periodic = /*<>*/ is_sub_periodic(sub, sub_lp); + /*<>*/ return function(s){ + /*<>*/ return -1 + !== find(0, sub, sub_lp, sub_periodic, s) + ? 1 + : 0 /*<>*/ ; /*<>*/ } /*<>*/ ; + /*<>*/ } + function hash(x){ + /*<>*/ return caml_string_hash(0, x) /*<>*/ ; + } + function subrange(_e_, opt, s){ + var + first = /*<>*/ _e_ ? _e_[1] : 0, + last = opt ? opt[1] : Stdlib[19], + max = /*<>*/ caml_ml_string_length(s) - 1 | 0, + first$0 = /*<>*/ 0 <= first ? first : 0, + last$0 = /*<>*/ max < last ? max : last; + /*<>*/ return last$0 < first$0 + ? cst + : /*<>*/ sub + (s, first$0, (last$0 - first$0 | 0) + 1 | 0) /*<>*/ ; + } + function take_first(n, s){ + /*<>*/ return subrange(0, [0, n - 1 | 0], s) /*<>*/ ; + } + function drop_first(n, s){ + /*<>*/ return subrange([0, n], 0, s) /*<>*/ ; + } + function cut_first(n, s){ + var _e_ = /*<>*/ drop_first(n, s); + /*<>*/ return [0, take_first(n, s), _e_] /*<>*/ ; + /*<>*/ } + function take_last(n, s){ + /*<>*/ return subrange + ([0, caml_ml_string_length(s) - n | 0], 0, s) /*<>*/ ; + } + function drop_last(n, s){ + /*<>*/ return subrange + (0, [0, (caml_ml_string_length(s) - n | 0) - 1 | 0], s) /*<>*/ ; + } + function cut_last(n, s){ + var _e_ = /*<>*/ take_last(n, s); + /*<>*/ return [0, drop_last(n, s), _e_] /*<>*/ ; + /*<>*/ } + function take_first_while(sat, s){ + var + len = /*<>*/ caml_ml_string_length(s), + i = /*<>*/ 0; + for(;;){ + if + (i < len + && + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + continue; + } + /*<>*/ return i === len + ? s + : /*<>*/ sub(s, 0, i) /*<>*/ ; + } + } + function drop_first_while(sat, s){ + var + len = /*<>*/ caml_ml_string_length(s), + i = /*<>*/ 0; + for(;;){ + if + (i < len + && + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + continue; + } + /*<>*/ return 0 === i + ? s + : /*<>*/ sub(s, i, len - i | 0) /*<>*/ ; + } + } + function cut_first_while(sat, s){ + var + len = /*<>*/ caml_ml_string_length(s), + i = /*<>*/ 0; + for(;;){ + if + (i < len + && + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i + 1 | 0; + i = i$0; + continue; + } + /*<>*/ if(i === len) + /*<>*/ return [0, s, cst]; + /*<>*/ if(0 === i) + /*<>*/ return [0, cst, s]; + var _e_ = /*<>*/ sub(s, i, len - i | 0); + /*<>*/ return [0, sub(s, 0, i), _e_] /*<>*/ ; + } + /*<>*/ } + function take_last_while(sat, s){ + var + len = /*<>*/ caml_ml_string_length(s), + i = /*<>*/ len - 1 | 0; + for(;;){ + if + (0 <= i + && + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i - 1 | 0; + i = i$0; + continue; + } + /*<>*/ if(0 > i) /*<>*/ return s; + var j = /*<>*/ i + 1 | 0; + /*<>*/ return sub(s, j, len - j | 0) /*<>*/ ; + } + } + function drop_last_while(sat, s){ + var + len = /*<>*/ caml_ml_string_length(s), + i = /*<>*/ len - 1 | 0; + for(;;){ + if + (0 <= i + && + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i - 1 | 0; + i = i$0; + continue; + } + /*<>*/ return 0 <= i + ? /*<>*/ sub(s, 0, i + 1 | 0) + : cst /*<>*/ ; + } + } + function cut_last_while(sat, s){ + var + len = /*<>*/ caml_ml_string_length(s), + i = /*<>*/ len - 1 | 0; + for(;;){ + if + (0 <= i + && + /*<>*/ caml_call1 + (sat, /*<>*/ caml_string_unsafe_get(s, i))){ + var i$0 = /*<>*/ i - 1 | 0; + i = i$0; + continue; + } + /*<>*/ if(0 > i) + /*<>*/ return [0, cst, s]; + /*<>*/ if(i === (len - 1 | 0)) + /*<>*/ return [0, s, cst]; + var + j = /*<>*/ i + 1 | 0, + _e_ = /*<>*/ sub(s, j, len - j | 0); + /*<>*/ return [0, sub(s, 0, j), _e_] /*<>*/ ; + } + /*<>*/ } + function split_first(sep){ + var find_first$0 = /*<>*/ find_first(sep); + /*<>*/ return function(s){ + var _e_ = /*<>*/ find_first$0(0, s); + /*<>*/ if(! _e_) /*<>*/ return 0; + var + i = /*<>*/ _e_[1], + _e_ = + /*<>*/ /*<>*/ subrange + ([0, i + /*<>*/ caml_ml_string_length(sep) | 0], + 0, + s); + /*<>*/ return [0, + [0, subrange(0, [0, i - 1 | 0], s), _e_]] /*<>*/ ; /*<>*/ } /*<>*/ ; + /*<>*/ } + function split_last(sep){ + var find_last$0 = /*<>*/ find_last(sep); + /*<>*/ return function(s){ + var _e_ = /*<>*/ find_last$0(0, s); + /*<>*/ if(! _e_) /*<>*/ return 0; + var + i = /*<>*/ _e_[1], + _e_ = + /*<>*/ /*<>*/ subrange + ([0, i + /*<>*/ caml_ml_string_length(sep) | 0], + 0, + s); + /*<>*/ return [0, + [0, subrange(0, [0, i - 1 | 0], s), _e_]] /*<>*/ ; /*<>*/ } /*<>*/ ; + /*<>*/ } + function split_all(sep){ + var find_all$0 = /*<>*/ find_all(sep); + /*<>*/ return function(opt, s){ + var + drop = + opt + ? opt[1] + : function + (param){ + /*<>*/ return 0; + /*<>*/ }, + first = /*<>*/ [0, 0]; + function add_token(i, acc){ + var + token = + /*<>*/ subrange([0, first[1]], [0, i - 1 | 0], s); + /*<>*/ first[1] = i + caml_ml_string_length(sep) | 0; + /*<>*/ return caml_call1(drop, token) + ? acc + : [0, token, acc] /*<>*/ ; + } + var + tokens = /*<>*/ find_all$0(add_token, 0, s, 0), + last = /*<>*/ subrange([0, first[1]], 0, s), + tokens$0 = + /*<>*/ caml_call1(drop, last) + ? tokens + : [0, last, tokens]; + /*<>*/ return Stdlib_List[11].call(null, tokens$0) /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function rsplit_all(sep){ + var rfind_all$0 = /*<>*/ rfind_all(sep); + /*<>*/ return function(opt, s){ + var + drop = + opt + ? opt[1] + : function + (param){ + /*<>*/ return 0; + /*<>*/ }, + last = /*<>*/ [0, caml_ml_string_length(s) - 1 | 0]; + function add_token(i, acc){ + var + token = + /*<>*/ /*<>*/ subrange + ([0, i + /*<>*/ caml_ml_string_length(sep) | 0], + [0, last[1]], + s); + /*<>*/ last[1] = i - 1 | 0; + /*<>*/ return caml_call1(drop, token) + ? acc + : [0, token, acc] /*<>*/ ; + } + var + tokens = /*<>*/ rfind_all$0(add_token, 0, s, 0), + last$0 = /*<>*/ subrange(0, [0, last[1]], s); + /*<>*/ return caml_call1(drop, last$0) + ? tokens + : [0, last$0, tokens] /*<>*/ ;} /*<>*/ ; + /*<>*/ } + function split_on_char(sep, s){ + var + _d_ = /*<>*/ caml_ml_string_length(s), + _e_ = /*<>*/ caml_ml_string_length(s) - 1 | 0, + _c_ = /*<>*/ 0; + /*<>*/ if(_e_ < 0) + var j$1 = _d_, r$1 = _c_; + else{ + var j = _d_, r = _c_, i = _e_; + for(;;){ + /*<>*/ if(caml_string_unsafe_get(s, i) === sep) + var + j$0 = /*<>*/ i, + r$0 = + [0, + /*<>*/ sub(s, i + 1 | 0, (j - i | 0) - 1 | 0), + r]; + else{ /*<>*/ j$0 = j; r$0 = r;} + _c_ = i - 1 | 0; + if(0 === i){j$1 = j$0; r$1 = r$0; break;} + j = j$0; + r = r$0; + i = _c_; + } + } + /*<>*/ return [0, sub(s, 0, j$1), r$1] /*<>*/ ; + /*<>*/ } + var compare = /*<>*/ runtime.caml_string_compare; + function is_empty(s){ + /*<>*/ return Stdlib_Int[12].call + (null, caml_ml_string_length(s), 0) /*<>*/ ; + } + function to_seq(s){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[47].call(null, _c_) /*<>*/ ; + } + function to_seqi(s){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[48].call(null, _c_) /*<>*/ ; + } + function of_seq(g){ + /*<>*/ return /*<>*/ bts + ( /*<>*/ Stdlib_Bytes[49].call(null, g)) /*<>*/ ; + } + function get_utf_8_uchar(s, i){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[50].call(null, _c_, i) /*<>*/ ; + } + function is_valid_utf_8(s){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[52].call(null, _c_); + } + function get_utf_16be_uchar(s, i){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[53].call(null, _c_, i) /*<>*/ ; + } + function is_valid_utf_16be(s){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[55].call(null, _c_); + } + function get_utf_16le_uchar(s, i){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[56].call(null, _c_, i) /*<>*/ ; + } + function is_valid_utf_16le(s){ + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[58].call(null, _c_); + } function get_int8(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[60].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[60].call(null, _c_, i) /*<>*/ ; } function get_uint16_le(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[63].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[63].call(null, _c_, i) /*<>*/ ; } function get_uint16_be(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[62].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[62].call(null, _c_, i) /*<>*/ ; } function get_int16_ne(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[64].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[64].call(null, _c_, i) /*<>*/ ; } function get_int16_le(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[66].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[66].call(null, _c_, i) /*<>*/ ; } function get_int16_be(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[65].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[65].call(null, _c_, i) /*<>*/ ; } function get_int32_le(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[69].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[69].call(null, _c_, i) /*<>*/ ; } function get_int32_be(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[68].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[68].call(null, _c_, i) /*<>*/ ; } function get_int64_le(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[72].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[72].call(null, _c_, i) /*<>*/ ; } function get_int64_be(s, i){ - var _c_ = /*<>*/ bos(s); - /*<>*/ return Stdlib_Bytes[71].call(null, _c_, i) /*<>*/ ; + var _c_ = /*<>*/ bos(s); + /*<>*/ return Stdlib_Bytes[71].call(null, _c_, i) /*<>*/ ; } function uchar_array_of_utf_8_string(s){ var - slen = /*<>*/ caml_ml_string_length(s), - uchars = /*<>*/ caml_array_make(slen, Stdlib_Uchar[2]), - i = /*<>*/ 0, + slen = /*<>*/ caml_ml_string_length(s), + uchars = /*<>*/ caml_array_make(slen, Stdlib_Uchar[2]), + i = /*<>*/ 0, k = 0; for(;;){ - if(i >= slen) /*<>*/ return [0, uchars, k]; + if(i >= slen) /*<>*/ return [0, uchars, k]; var - dec = /*<>*/ get_utf_8_uchar(s, i), - _b_ = /*<>*/ i + Stdlib_Uchar[21].call(null, dec) | 0, - _c_ = /*<>*/ Stdlib_Uchar[20].call(null, dec); - /*<>*/ caml_check_bound(uchars, k)[k + 1] = _c_; - var k$0 = /*<>*/ k + 1 | 0; + dec = /*<>*/ get_utf_8_uchar(s, i), + _b_ = /*<>*/ i + Stdlib_Uchar[21].call(null, dec) | 0, + _c_ = /*<>*/ Stdlib_Uchar[20].call(null, dec); + /*<>*/ caml_check_bound(uchars, k)[k + 1] = _c_; + var k$0 = /*<>*/ k + 1 | 0; i = _b_; k = k$0; } - /*<>*/ } + /*<>*/ } function edit_distance(_b_, s, _a_, s1){ var - limit = /*<>*/ _b_ ? _b_[1] : Stdlib_Int[5], + limit = /*<>*/ _b_ ? _b_[1] : Stdlib_Int[9], len0 = _a_[2], s0 = _a_[1]; - /*<>*/ if(1 >= limit) - /*<>*/ return s === s1 ? 0 : limit; - /*<>*/ _a_ = uchar_array_of_utf_8_string(s1); + /*<>*/ if(1 >= limit) + /*<>*/ return s === s1 ? 0 : limit; + /*<>*/ _a_ = uchar_array_of_utf_8_string(s1); var - len1 = /*<>*/ _a_[2], + len1 = /*<>*/ _a_[2], s0$0 = _a_[1], - _a_ = /*<>*/ Stdlib_Int[11].call(null, len0, len1), - limit$0 = /*<>*/ Stdlib_Int[10].call(null, _a_, limit); - /*<>*/ if - (limit$0 <= Stdlib_Int[4].call(null, len1 - len0 | 0)) - /*<>*/ return limit$0; - /*<>*/ if(len1 < len0) + _a_ = /*<>*/ Stdlib_Int[15].call(null, len0, len1), + limit$0 = /*<>*/ Stdlib_Int[14].call(null, _a_, limit); + /*<>*/ if + (limit$0 <= Stdlib_Int[8].call(null, len1 - len0 | 0)) + /*<>*/ return limit$0; + /*<>*/ if(len1 < len0) var s1$0 = s0$0, s0$1 = s0; else{s1$0 = s0; s0$1 = s0$0;} - /*<>*/ if(len1 < len0) + /*<>*/ if(len1 < len0) var len1$0 = len1, len0$0 = len0; else{len1$0 = len0; len0$0 = len1;} var - ignore = /*<>*/ limit$0 + 1 | 0, + ignore = /*<>*/ limit$0 + 1 | 0, row_minus2$0 = - /*<>*/ caml_array_make(len1$0 + 1 | 0, ignore), + /*<>*/ caml_array_make(len1$0 + 1 | 0, ignore), row_minus1$1 = - /*<>*/ Stdlib_Array[1].call + /*<>*/ Stdlib_Array[1].call (null, len1$0 + 1 | 0, function(x){ - /*<>*/ return x; - /*<>*/ }), - row = /*<>*/ caml_array_make(len1$0 + 1 | 0, ignore), - row_minus2 = /*<>*/ row_minus2$0, + /*<>*/ return x; + /*<>*/ }), + row = /*<>*/ caml_array_make(len1$0 + 1 | 0, ignore), + row_minus2 = /*<>*/ row_minus2$0, row_minus1$0 = row_minus1$1, row_minus1 = row, i = 1; for(;;){ - /*<>*/ if(len0$0 < i){ - /*<>*/ _a_ = row_minus1$0.length - 2 | 0; + /*<>*/ if(len0$0 < i){ + /*<>*/ _a_ = row_minus1$0.length - 2 | 0; var d = - /*<>*/ /*<>*/ caml_check_bound + /*<>*/ /*<>*/ caml_check_bound (row_minus1$0, _a_) [_a_ + 1]; } else{ var - len1$1 = /*<>*/ row_minus1.length - 2 | 0, - row_min = Stdlib_Int[5]; - /*<>*/ caml_check_bound(row_minus1, 0)[1] = i; + len1$1 = /*<>*/ row_minus1.length - 2 | 0, + row_min = Stdlib_Int[9]; + /*<>*/ caml_check_bound(row_minus1, 0)[1] = i; var jmax = - /*<>*/ Stdlib_Int[10].call + /*<>*/ Stdlib_Int[14].call (null, len1$1, (i + limit$0 | 0) - 1 | 0), - jmax$0 = /*<>*/ 0 <= jmax ? jmax : len1$1, + jmax$0 = /*<>*/ 0 <= jmax ? jmax : len1$1, _a_ = - /*<>*/ Stdlib_Int[11].call + /*<>*/ Stdlib_Int[15].call (null, 1, i - limit$0 | 0); - /*<>*/ if(jmax$0 < _a_) + /*<>*/ if(jmax$0 < _a_) var row_min$1 = row_min; else{ var row_min$0 = row_min, j = _a_; for(;;){ - /*<>*/ _a_ = j - 1 | 0; - /*<>*/ _b_ = i - 1 | 0; - /*<>*/ _a_ = caml_check_bound(s1$0, _a_)[_a_ + 1]; - /*<>*/ _b_ = caml_check_bound(s0$1, _b_)[_b_ + 1]; + /*<>*/ _a_ = j - 1 | 0; + /*<>*/ _b_ = i - 1 | 0; + /*<>*/ _a_ = caml_check_bound(s1$0, _a_)[_a_ + 1]; + /*<>*/ _b_ = caml_check_bound(s0$1, _b_)[_b_ + 1]; var cost = - /*<>*/ Stdlib_Uchar[15].call(null, _b_, _a_) + /*<>*/ Stdlib_Uchar[15].call(null, _b_, _a_) ? 0 : 1, - _a_ = /*<>*/ j - 1 | 0, + _a_ = /*<>*/ j - 1 | 0, c = - /*<>*/ caml_check_bound(row_minus1, _a_) + /*<>*/ caml_check_bound(row_minus1, _a_) [_a_ + 1] + 1 | 0, b = - /*<>*/ caml_check_bound(row_minus1$0, j)[j + 1] + /*<>*/ caml_check_bound(row_minus1$0, j)[j + 1] + 1 | 0, - _a_ = /*<>*/ j - 1 | 0, + _a_ = /*<>*/ j - 1 | 0, a = - /*<>*/ caml_check_bound(row_minus1$0, _a_) + /*<>*/ caml_check_bound(row_minus1$0, _a_) [_a_ + 1] + cost | 0, - _a_ = /*<>*/ Stdlib_Int[10].call(null, b, c), - min = /*<>*/ Stdlib_Int[10].call(null, a, _a_); - /*<>*/ if(1 < i && 1 < j){ + _a_ = /*<>*/ Stdlib_Int[14].call(null, b, c), + min = /*<>*/ Stdlib_Int[14].call(null, a, _a_); + /*<>*/ if(1 < i && 1 < j){ _a_ = j - 2 | 0; - /*<>*/ _b_ = i - 1 | 0; - /*<>*/ _a_ = caml_check_bound(s1$0, _a_)[_a_ + 1]; - /*<>*/ _b_ = caml_check_bound(s0$1, _b_)[_b_ + 1]; - /*<>*/ if(Stdlib_Uchar[15].call(null, _b_, _a_)){ - /*<>*/ _a_ = j - 1 | 0; - /*<>*/ _b_ = i - 2 | 0; - /*<>*/ _a_ = caml_check_bound(s1$0, _a_)[_a_ + 1]; - /*<>*/ _b_ = caml_check_bound(s0$1, _b_)[_b_ + 1]; - /*<>*/ if(Stdlib_Uchar[15].call(null, _b_, _a_)){ - /*<>*/ _a_ = j - 2 | 0; - /*<>*/ _a_ = + /*<>*/ _b_ = i - 1 | 0; + /*<>*/ _a_ = caml_check_bound(s1$0, _a_)[_a_ + 1]; + /*<>*/ _b_ = caml_check_bound(s0$1, _b_)[_b_ + 1]; + /*<>*/ if(Stdlib_Uchar[15].call(null, _b_, _a_)){ + /*<>*/ _a_ = j - 1 | 0; + /*<>*/ _b_ = i - 2 | 0; + /*<>*/ _a_ = caml_check_bound(s1$0, _a_)[_a_ + 1]; + /*<>*/ _b_ = caml_check_bound(s0$1, _b_)[_b_ + 1]; + /*<>*/ if(Stdlib_Uchar[15].call(null, _b_, _a_)){ + /*<>*/ _a_ = j - 2 | 0; + /*<>*/ _a_ = caml_check_bound(row_minus2, _a_)[_a_ + 1] + cost | 0; var min$0 = - /*<>*/ /*<>*/ Stdlib_Int - [10].call + /*<>*/ /*<>*/ Stdlib_Int + [14].call (null, min, _a_); } else - /*<>*/ min$0 = min; + /*<>*/ min$0 = min; } else - /*<>*/ min$0 = min; + /*<>*/ min$0 = min; } else - /*<>*/ min$0 = min; - /*<>*/ caml_check_bound(row_minus1, j)[j + 1] = min$0; - /*<>*/ _a_ = - Stdlib_Int[10].call(null, row_min$0, min$0); - /*<>*/ _b_ = j + 1 | 0; + /*<>*/ min$0 = min; + /*<>*/ caml_check_bound(row_minus1, j)[j + 1] = min$0; + /*<>*/ _a_ = + Stdlib_Int[14].call(null, row_min$0, min$0); + /*<>*/ _b_ = j + 1 | 0; if(jmax$0 === j){row_min$1 = _a_; break;} row_min$0 = _a_; j = _b_; } } - /*<>*/ if(limit$0 > row_min$1){ - var i$0 = /*<>*/ i + 1 | 0, _a_ = row_minus1; + /*<>*/ if(limit$0 > row_min$1){ + var i$0 = /*<>*/ i + 1 | 0, _a_ = row_minus1; row_minus1 = row_minus2; row_minus2 = row_minus1$0; row_minus1$0 = _a_; i = i$0; continue; } - /*<>*/ d = limit$0; + /*<>*/ d = limit$0; } - /*<>*/ return limit$0 < d ? limit$0 : d; + /*<>*/ return limit$0 < d ? limit$0 : d; } } function edit_distance$0(limit, s0, s1){ - var us0 = /*<>*/ uchar_array_of_utf_8_string(s0); - /*<>*/ return edit_distance(limit, s0, us0, s1) /*<>*/ ; + var us0 = /*<>*/ uchar_array_of_utf_8_string(s0); + /*<>*/ return edit_distance(limit, s0, us0, s1) /*<>*/ ; } function default_max_dist(s){ var - slen = /*<>*/ caml_ml_string_length(s), - ulen = /*<>*/ 0, + slen = /*<>*/ caml_ml_string_length(s), + ulen = /*<>*/ 0, i = 0; for(;;){ if(i >= slen){ - /*<>*/ if(3 <= ulen){ - if(5 > ulen) /*<>*/ return 1; + /*<>*/ if(3 <= ulen){ + if(5 > ulen) /*<>*/ return 1; } - else if(0 <= ulen) /*<>*/ return 0; - /*<>*/ return 2; + else if(0 <= ulen) /*<>*/ return 0; + /*<>*/ return 2; } var dec_len = - /*<>*/ /*<>*/ Stdlib_Uchar[24].call - (null, /*<>*/ caml_string_unsafe_get(s, i)), - _a_ = /*<>*/ 0 === dec_len ? 1 : dec_len, - ulen$0 = /*<>*/ ulen + 1 | 0; + /*<>*/ /*<>*/ Stdlib_Uchar[24].call + (null, /*<>*/ caml_string_unsafe_get(s, i)), + _a_ = /*<>*/ 0 === dec_len ? 1 : dec_len, + ulen$0 = /*<>*/ ulen + 1 | 0; ulen = ulen$0; i = i + _a_ | 0; } - /*<>*/ } + /*<>*/ } function spellcheck(opt, iter_dict, s){ var - max_dist = /*<>*/ opt ? opt[1] : default_max_dist, - min = /*<>*/ [0, caml_call1(max_dist, s)], - us = /*<>*/ uchar_array_of_utf_8_string(s), - acc = /*<>*/ [0, 0]; - /*<>*/ caml_call1 + max_dist = /*<>*/ opt ? opt[1] : default_max_dist, + min = /*<>*/ [0, caml_call1(max_dist, s)], + us = /*<>*/ uchar_array_of_utf_8_string(s), + acc = /*<>*/ [0, 0]; + /*<>*/ caml_call1 (iter_dict, function(word){ var d = - /*<>*/ edit_distance + /*<>*/ edit_distance ([0, min[1] + 1 | 0], s, us, word); - /*<>*/ return d === min[1] + /*<>*/ return d === min[1] ? (acc[1] = [0, word, acc[1]], 0) : d < min[1] ? (min[1] = d, acc[1] = [0, word, 0], 0) : 0; }); - /*<>*/ return Stdlib_List[11].call(null, acc[1]) /*<>*/ ; + /*<>*/ return Stdlib_List[11].call(null, acc[1]) /*<>*/ ; } var Stdlib_String = @@ -9042,6 +10204,7 @@ make, init, cst, + of_char, of_bytes, to_bytes, blit, @@ -9049,12 +10212,30 @@ cat, caml_string_equal, compare, + is_empty, starts_with, ends_with, + includes, contains_from, rcontains_from, contains, sub, + take_first, + take_last, + drop_first, + drop_last, + cut_first, + cut_last, + take_first_while, + take_last_while, + drop_first_while, + drop_last_while, + cut_first_while, + cut_last_while, + split_first, + split_last, + split_all, + rsplit_all, split_on_char, map, mapi, @@ -9070,6 +10251,8 @@ uncapitalize_ascii, iter, iteri, + find_first_index, + find_last_index, index_from, index_from_opt, rindex_from, @@ -9078,6 +10261,13 @@ index_opt, rindex, rindex_opt, + find_first, + find_last, + find_all, + rfind_all, + replace_first, + replace_last, + replace_all, to_seq, to_seqi, of_seq, @@ -9089,7 +10279,7 @@ is_valid_utf_16le, edit_distance$0, spellcheck, - runtime.caml_string_get, + caml_string_get, get_int8, runtime.caml_string_get16, get_uint16_be, @@ -10257,12 +11447,14 @@ //# unitInfo: Provides: Stdlib__Int32 //# unitInfo: Requires: Stdlib, Stdlib__Sys -//# shape: Stdlib__Int32:[N,N,N,F(2),F(2),F(1)*,F(1)*,F(1),N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2),F(2),F(2),F(2)*,F(1)*] +//# shape: Stdlib__Int32:[N,N,N,F(2),F(2),F(2),F(2),F(2),F(2),F(1)*,F(1)*,F(1),N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2),F(2),F(2),F(1)*,F(1),F(1),F(1),F(1),F(1),F(2)*,F(1)*] (function (globalThis){ "use strict"; var runtime = globalThis.jsoo_runtime, + caml_div = runtime.caml_div, + caml_equal = runtime.caml_equal, caml_get_global = runtime.caml_get_global, caml_greaterequal = runtime.caml_greaterequal, caml_hash = runtime.caml_hash, @@ -10271,6 +11463,7 @@ caml_lessthan = runtime.caml_lessthan, caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, caml_mul = runtime.caml_mul, + caml_notequal = runtime.caml_notequal, caml_wrap_exception = runtime.caml_wrap_exception, Stdlib = caml_get_global("Stdlib"), Stdlib_Sys = caml_get_global("Stdlib__Sys"), @@ -10281,7 +11474,7 @@ /*<>*/ return caml_greaterequal(n, 0) ? n : - n | 0 /*<>*/ ; } function lognot(n){ /*<>*/ return n ^ -1;} - var match = /*<>*/ Stdlib_Sys[10]; + var match = /*<>*/ Stdlib_Sys[11]; if(32 === match) var max_int = /*<>*/ Stdlib[19], @@ -10316,7 +11509,6 @@ /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); } /*<>*/ } - var equal = /*<>*/ runtime.caml_equal; function unsigned_compare(n, m){ var y = /*<>*/ m + 2147483648 | 0, @@ -10338,7 +11530,7 @@ /*<>*/ if(caml_lessthan(d, 0)) /*<>*/ return unsigned_lt(n, d) ? zero : one /*<>*/ ; var - q = /*<>*/ runtime.caml_div(n >>> 1 | 0, d) << 1, + q = /*<>*/ caml_div(n >>> 1 | 0, d) << 1, r = /*<>*/ n - caml_mul(q, d) | 0; /*<>*/ return unsigned_lt(r, d) ? q : q + 1 | 0 /*<>*/ ; } @@ -10349,11 +11541,122 @@ ( /*<>*/ unsigned_div(n, d), d) | 0 /*<>*/ ; } + function fdiv(n, d){ + var q = /*<>*/ caml_div(n, d); + /*<>*/ if + (! + caml_greaterequal(n ^ d, 0) + && + ! + /*<>*/ caml_equal + (n, /*<>*/ caml_mul(q, d))) + /*<>*/ return q - 1 | 0; + /*<>*/ return q; + /*<>*/ } + function cdiv(n, d){ + var q = /*<>*/ caml_div(n, d); + /*<>*/ if + (! + caml_lessthan(n ^ d, 0) + && + ! + /*<>*/ caml_equal + (n, /*<>*/ caml_mul(q, d))) + /*<>*/ return q + 1 | 0; + /*<>*/ return q; + /*<>*/ } + function erem(n, d){ + var r = /*<>*/ runtime.caml_mod(n, d); + /*<>*/ return caml_greaterequal(r, 0) + ? r + : /*<>*/ caml_greaterequal + (d, 0) + ? r + d | 0 + : r - d | 0 /*<>*/ ; + } + function ediv(n, d){ + var + q = /*<>*/ caml_div(n, d), + r = /*<>*/ n - caml_mul(q, d) | 0; + /*<>*/ return caml_greaterequal(r, 0) + ? q + : /*<>*/ caml_greaterequal + (d, 0) + ? q - 1 | 0 + : q + 1 | 0 /*<>*/ ; + } + function leading_zeros(x){ + var y = /*<>*/ x >>> 16 | 0; + /*<>*/ if(caml_notequal(y, 0)) + var n = /*<>*/ 16, x$0 = y; + else{ /*<>*/ n = 32; x$0 = x;} + var y$0 = /*<>*/ x$0 >>> 8 | 0; + /*<>*/ if(caml_notequal(y$0, 0)) + var n$0 = /*<>*/ n - 8 | 0, x$1 = y$0; + else{ /*<>*/ n$0 = n; x$1 = x$0;} + var y$1 = /*<>*/ x$1 >>> 4 | 0; + /*<>*/ if(caml_notequal(y$1, 0)) + var n$1 = /*<>*/ n$0 - 4 | 0, x$2 = y$1; + else{ /*<>*/ n$1 = n$0; x$2 = x$1;} + var y$2 = /*<>*/ x$2 >>> 2 | 0; + /*<>*/ if(caml_notequal(y$2, 0)) + var n$2 = /*<>*/ n$1 - 2 | 0, x$3 = y$2; + else{ /*<>*/ n$2 = n$1; x$3 = x$2;} + var y$3 = /*<>*/ x$3 >>> 1 | 0; + /*<>*/ return caml_notequal(y$3, 0) + ? n$2 - 2 | 0 + : n$2 - x$3 | 0 /*<>*/ ; + } + function unsigned_bitsize(x){ + /*<>*/ return 32 - leading_zeros(x) | 0 /*<>*/ ; + } + function leading_sign_bits(x){ + /*<>*/ return caml_greaterequal(x, 0) + ? /*<>*/ leading_zeros(x) - 1 | 0 + : /*<>*/ leading_zeros(x ^ -1) - 1 | 0 /*<>*/ ; + } + function signed_bitsize(x){ + /*<>*/ return 32 - leading_sign_bits(x) | 0 /*<>*/ ; + } + function trailing_zeros(x){ + /*<>*/ if(caml_equal(x, 0)) + /*<>*/ return 32; + var y = /*<>*/ x << 16; + /*<>*/ if(caml_notequal(y, 0)) + var n = /*<>*/ 15, x$0 = y; + else{ /*<>*/ n = 31; x$0 = x;} + var y$0 = /*<>*/ x$0 << 8; + /*<>*/ if(caml_notequal(y$0, 0)) + var n$0 = /*<>*/ n - 8 | 0, x$1 = y$0; + else{ /*<>*/ n$0 = n; x$1 = x$0;} + var y$1 = /*<>*/ x$1 << 4; + /*<>*/ if(caml_notequal(y$1, 0)) + var n$1 = /*<>*/ n$0 - 4 | 0, x$2 = y$1; + else{ /*<>*/ n$1 = n$0; x$2 = x$1;} + var y$2 = /*<>*/ x$2 << 2; + /*<>*/ if(caml_notequal(y$2, 0)) + var n$2 = /*<>*/ n$1 - 2 | 0, x$3 = y$2; + else{ /*<>*/ n$2 = n$1; x$3 = x$2;} + var y$3 = /*<>*/ x$3 << 1; + /*<>*/ return caml_notequal(y$3, 0) ? n$2 - 1 | 0 : n$2 /*<>*/ ; + } + function popcount(x){ + var + x$0 = /*<>*/ x - ((x >>> 1 | 0) & 1431655765) | 0, + x$1 = + /*<>*/ (x$0 & 858993459) + + ((x$0 >>> 2 | 0) & 858993459) + | 0, + x$2 = /*<>*/ (x$1 + (x$1 >>> 4 | 0) | 0) & 252645135, + x$3 = /*<>*/ x$2 + (x$2 >>> 8 | 0) | 0, + x$4 = /*<>*/ x$3 + (x$3 >>> 16 | 0) | 0; + /*<>*/ return x$4 & 63; + /*<>*/ } function seeded_hash(seed, x){ - /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; } function hash(x){ - /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; } var Stdlib_Int32 = @@ -10363,6 +11666,10 @@ -1, unsigned_div, unsigned_rem, + fdiv, + cdiv, + ediv, + erem, succ, pred, abs, @@ -10374,9 +11681,15 @@ to_string, caml_int_compare, unsigned_compare, - equal, + caml_equal, min, max, + popcount, + unsigned_bitsize, + signed_bitsize, + leading_zeros, + leading_sign_bits, + trailing_zeros, seeded_hash, hash]; runtime.caml_register_global(Stdlib_Int32, "Stdlib__Int32"); @@ -10386,23 +11699,33 @@ //# unitInfo: Provides: Stdlib__Int64 //# unitInfo: Requires: Stdlib -//# shape: Stdlib__Int64:[N,N,N,F(2),F(2),F(1)*,F(1)*,F(1),N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2),F(2),F(2),F(2)*,F(1)*] +//# shape: Stdlib__Int64:[N,N,N,F(2),F(2),F(2),F(2),F(2),F(2),F(1)*,F(1)*,F(1),N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2),F(2),F(2),F(1)*,F(1),F(1),F(1),F(1),F(1),F(2)*,F(1)*] (function (globalThis){ "use strict"; var runtime = globalThis.jsoo_runtime, + caml_equal = runtime.caml_equal, caml_greaterequal = runtime.caml_greaterequal, caml_hash = runtime.caml_hash, caml_int64_add = runtime.caml_int64_add, + caml_int64_and = runtime.caml_int64_and, caml_int64_compare = runtime.caml_int64_compare, caml_int64_create_lo_mi_hi = runtime.caml_int64_create_lo_mi_hi, + caml_int64_div = runtime.caml_int64_div, caml_int64_mul = runtime.caml_int64_mul, + caml_int64_shift_left = runtime.caml_int64_shift_left, + caml_int64_shift_right_unsigne = runtime.caml_int64_shift_right_unsigned, caml_int64_sub = runtime.caml_int64_sub, + caml_int64_to_int32 = runtime.caml_int64_to_int32, + caml_int64_xor = runtime.caml_int64_xor, caml_lessequal = runtime.caml_lessequal, caml_lessthan = runtime.caml_lessthan, caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, + caml_notequal = runtime.caml_notequal, caml_wrap_exception = runtime.caml_wrap_exception, + _c_ = caml_int64_create_lo_mi_hi(16777215, 16777215, 65535), + _b_ = caml_int64_create_lo_mi_hi(1, 0, 0), _a_ = caml_int64_create_lo_mi_hi(1, 0, 0), zero = caml_int64_create_lo_mi_hi(0, 0, 0), one = caml_int64_create_lo_mi_hi(1, 0, 0), @@ -10410,9 +11733,7 @@ min_int = caml_int64_create_lo_mi_hi(0, 0, 32768), max_int = caml_int64_create_lo_mi_hi(16777215, 16777215, 32767), Stdlib = runtime.caml_get_global("Stdlib"), - _b_ = caml_int64_create_lo_mi_hi(1, 0, 0), - _c_ = caml_int64_create_lo_mi_hi(0, 0, 0), - _d_ = caml_int64_create_lo_mi_hi(16777215, 16777215, 65535); + _d_ = caml_int64_create_lo_mi_hi(0, 0, 0); function succ(n){ /*<>*/ return caml_int64_add(n, _a_) /*<>*/ ; } @@ -10420,12 +11741,12 @@ /*<>*/ return caml_int64_sub(n, _b_) /*<>*/ ; } function abs(n){ - /*<>*/ return caml_greaterequal(n, _c_) + /*<>*/ return caml_greaterequal(n, _d_) ? n : /*<>*/ runtime.caml_int64_neg(n) /*<>*/ ; } function lognot(n){ - /*<>*/ return runtime.caml_int64_xor(n, _d_) /*<>*/ ; + /*<>*/ return caml_int64_xor(n, _c_) /*<>*/ ; } var max_int$0 = @@ -10435,7 +11756,7 @@ /*<>*/ if (caml_greaterequal(n, _e_) && /*<>*/ caml_lessequal(n, max_int$0)) - /*<>*/ return [0, runtime.caml_int64_to_int32(n)]; + /*<>*/ return [0, caml_int64_to_int32(n)]; /*<>*/ return 0; /*<>*/ } function to_string(n){ @@ -10443,8 +11764,8 @@ } function of_string_opt(s){ /*<>*/ try{ - var _e_ = /*<>*/ [0, runtime.caml_int64_of_string(s)]; - return _e_; + var _C_ = /*<>*/ [0, runtime.caml_int64_of_string(s)]; + return _C_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); @@ -10455,7 +11776,31 @@ function compare(x, y){ /*<>*/ return caml_int64_compare(x, y) /*<>*/ ; } - var equal = /*<>*/ runtime.caml_equal; + var + _f_ = /*<>*/ caml_int64_create_lo_mi_hi(0, 0, 0), + _g_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _h_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _i_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _j_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _k_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _l_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _m_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _n_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _o_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _p_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _q_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _r_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _s_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _t_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _u_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _v_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _w_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _x_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _y_ = caml_int64_create_lo_mi_hi(0, 0, 0), + _z_ = caml_int64_create_lo_mi_hi(5592405, 5592405, 21845), + _A_ = caml_int64_create_lo_mi_hi(3355443, 3355443, 13107), + _B_ = caml_int64_create_lo_mi_hi(3355443, 3355443, 13107), + _C_ = caml_int64_create_lo_mi_hi(986895, 986895, 3855); function unsigned_compare(n, m){ var y = /*<>*/ caml_int64_sub(m, min_int), @@ -10478,11 +11823,9 @@ /*<>*/ return unsigned_lt(n, d) ? zero : one /*<>*/ ; var q = - /*<>*/ /*<>*/ runtime.caml_int64_shift_left - ( /*<>*/ runtime.caml_int64_div - ( /*<>*/ runtime.caml_int64_shift_right_unsigned - (n, 1), - d), + /*<>*/ /*<>*/ caml_int64_shift_left + ( /*<>*/ caml_int64_div + ( /*<>*/ caml_int64_shift_right_unsigne(n, 1), d), 1), r = /*<>*/ /*<>*/ caml_int64_sub @@ -10497,11 +11840,156 @@ /*<>*/ caml_int64_mul ( /*<>*/ unsigned_div(n, d), d)) /*<>*/ ; } + function fdiv(n, d){ + var q = /*<>*/ caml_int64_div(n, d); + /*<>*/ if + (! + caml_greaterequal(caml_int64_xor(n, d), _f_) + && + ! + /*<>*/ caml_equal + (n, /*<>*/ caml_int64_mul(q, d))) + /*<>*/ return caml_int64_sub(q, _b_) /*<>*/ ; + /*<>*/ return q; + /*<>*/ } + function cdiv(n, d){ + var q = /*<>*/ caml_int64_div(n, d); + /*<>*/ if + (! + caml_lessthan(caml_int64_xor(n, d), _g_) + && + ! + /*<>*/ caml_equal + (n, /*<>*/ caml_int64_mul(q, d))) + /*<>*/ return caml_int64_add(q, _a_) /*<>*/ ; + /*<>*/ return q; + /*<>*/ } + function erem(n, d){ + var r = /*<>*/ runtime.caml_int64_mod(n, d); + /*<>*/ return caml_greaterequal(r, _h_) + ? r + : /*<>*/ caml_greaterequal + (d, _i_) + ? /*<>*/ caml_int64_add(r, d) + : /*<>*/ caml_int64_sub(r, d) /*<>*/ ; + } + function ediv(n, d){ + var + q = /*<>*/ caml_int64_div(n, d), + r = + /*<>*/ /*<>*/ caml_int64_sub + (n, /*<>*/ caml_int64_mul(q, d)); + /*<>*/ return caml_greaterequal(r, _j_) + ? q + : /*<>*/ caml_greaterequal + (d, _k_) + ? /*<>*/ caml_int64_sub(q, _b_) + : /*<>*/ caml_int64_add(q, _a_) /*<>*/ ; + } + function leading_zeros(x){ + var y = /*<>*/ caml_int64_shift_right_unsigne(x, 32); + /*<>*/ if(caml_notequal(y, _l_)) + var n = /*<>*/ 32, x$0 = y; + else{ /*<>*/ n = 64; x$0 = x;} + var + y$0 = /*<>*/ caml_int64_shift_right_unsigne(x$0, 16); + /*<>*/ if(caml_notequal(y$0, _m_)) + var n$0 = /*<>*/ n - 16 | 0, x$1 = y$0; + else{ /*<>*/ n$0 = n; x$1 = x$0;} + var y$1 = /*<>*/ caml_int64_shift_right_unsigne(x$1, 8); + /*<>*/ if(caml_notequal(y$1, _n_)) + var n$1 = /*<>*/ n$0 - 8 | 0, x$2 = y$1; + else{ /*<>*/ n$1 = n$0; x$2 = x$1;} + var y$2 = /*<>*/ caml_int64_shift_right_unsigne(x$2, 4); + /*<>*/ if(caml_notequal(y$2, _o_)) + var n$2 = /*<>*/ n$1 - 4 | 0, x$3 = y$2; + else{ /*<>*/ n$2 = n$1; x$3 = x$2;} + var y$3 = /*<>*/ caml_int64_shift_right_unsigne(x$3, 2); + /*<>*/ if(caml_notequal(y$3, _p_)) + var n$3 = /*<>*/ n$2 - 2 | 0, x$4 = y$3; + else{ /*<>*/ n$3 = n$2; x$4 = x$3;} + var y$4 = /*<>*/ caml_int64_shift_right_unsigne(x$4, 1); + /*<>*/ return caml_notequal(y$4, _q_) + ? n$3 - 2 | 0 + : n$3 - /*<>*/ caml_int64_to_int32(x$4) | 0 /*<>*/ ; + } + function unsigned_bitsize(x){ + /*<>*/ return 64 - leading_zeros(x) | 0 /*<>*/ ; + } + function leading_sign_bits(x){ + /*<>*/ return caml_greaterequal(x, _r_) + ? /*<>*/ leading_zeros(x) - 1 | 0 + : /*<>*/ leading_zeros + ( /*<>*/ caml_int64_xor(x, _c_)) + - 1 + | 0 /*<>*/ ; + } + function signed_bitsize(x){ + /*<>*/ return 64 - leading_sign_bits(x) | 0 /*<>*/ ; + } + function trailing_zeros(x){ + /*<>*/ if(caml_equal(x, _s_)) + /*<>*/ return 64; + var y = /*<>*/ caml_int64_shift_left(x, 32); + /*<>*/ if(caml_notequal(y, _t_)) + var n = /*<>*/ 31, x$0 = y; + else{ /*<>*/ n = 63; x$0 = x;} + var y$0 = /*<>*/ caml_int64_shift_left(x$0, 16); + /*<>*/ if(caml_notequal(y$0, _u_)) + var n$0 = /*<>*/ n - 16 | 0, x$1 = y$0; + else{ /*<>*/ n$0 = n; x$1 = x$0;} + var y$1 = /*<>*/ caml_int64_shift_left(x$1, 8); + /*<>*/ if(caml_notequal(y$1, _v_)) + var n$1 = /*<>*/ n$0 - 8 | 0, x$2 = y$1; + else{ /*<>*/ n$1 = n$0; x$2 = x$1;} + var y$2 = /*<>*/ caml_int64_shift_left(x$2, 4); + /*<>*/ if(caml_notequal(y$2, _w_)) + var n$2 = /*<>*/ n$1 - 4 | 0, x$3 = y$2; + else{ /*<>*/ n$2 = n$1; x$3 = x$2;} + var y$3 = /*<>*/ caml_int64_shift_left(x$3, 2); + /*<>*/ if(caml_notequal(y$3, _x_)) + var n$3 = /*<>*/ n$2 - 2 | 0, x$4 = y$3; + else{ /*<>*/ n$3 = n$2; x$4 = x$3;} + var y$4 = /*<>*/ caml_int64_shift_left(x$4, 1); + /*<>*/ return caml_notequal(y$4, _y_) ? n$3 - 1 | 0 : n$3 /*<>*/ ; + } + function popcount(x){ + var + x$0 = + /*<>*/ /*<>*/ caml_int64_sub + (x, + /*<>*/ caml_int64_and + ( /*<>*/ caml_int64_shift_right_unsigne(x, 1), _z_)), + x$1 = + /*<>*/ /*<>*/ caml_int64_add + ( /*<>*/ caml_int64_and(x$0, _B_), + /*<>*/ caml_int64_and + ( /*<>*/ caml_int64_shift_right_unsigne(x$0, 2), + _A_)), + x$2 = + /*<>*/ /*<>*/ caml_int64_and + ( /*<>*/ caml_int64_add + (x$1, + /*<>*/ caml_int64_shift_right_unsigne(x$1, 4)), + _C_), + x$3 = + /*<>*/ /*<>*/ caml_int64_add + (x$2, /*<>*/ caml_int64_shift_right_unsigne(x$2, 8)), + x$4 = + /*<>*/ /*<>*/ caml_int64_add + (x$3, + /*<>*/ caml_int64_shift_right_unsigne(x$3, 16)), + x$5 = + /*<>*/ /*<>*/ caml_int64_add + (x$4, + /*<>*/ caml_int64_shift_right_unsigne(x$4, 32)); + /*<>*/ return caml_int64_to_int32(x$5) & 127; + /*<>*/ } function seeded_hash(seed, x){ - /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; } function hash(x){ - /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; } /*<>*/ runtime.caml_register_global ([0, @@ -10510,6 +11998,10 @@ minus_one, unsigned_div, unsigned_rem, + fdiv, + cdiv, + ediv, + erem, succ, pred, abs, @@ -10521,9 +12013,15 @@ to_string, compare, unsigned_compare, - equal, + caml_equal, min, max, + popcount, + unsigned_bitsize, + signed_bitsize, + leading_zeros, + leading_sign_bits, + trailing_zeros, seeded_hash, hash], "Stdlib__Int64"); @@ -10532,22 +12030,27 @@ (globalThis)); //# unitInfo: Provides: Stdlib__Nativeint -//# unitInfo: Requires: Stdlib, Stdlib__Sys -//# shape: Stdlib__Nativeint:[N,N,N,F(2),F(2),F(1)*,F(1)*,F(1),N,N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2)*,F(2),F(2),F(2)*,F(1)*] +//# unitInfo: Requires: Stdlib, Stdlib__Int32, Stdlib__Int64, Stdlib__Sys +//# shape: Stdlib__Nativeint:[N,N,N,F(2),F(2),F(2),F(2),F(2),F(2),F(1)*,F(1)*,F(1),N,N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2)*,F(2),F(2),F(1)*,F(1),F(1),F(1),F(1),F(1),F(2)*,F(1)*] (function (globalThis){ "use strict"; var runtime = globalThis.jsoo_runtime, + caml_div = runtime.caml_div, + caml_equal = runtime.caml_equal, caml_get_global = runtime.caml_get_global, caml_greaterequal = runtime.caml_greaterequal, caml_hash = runtime.caml_hash, + caml_int64_of_int32 = runtime.caml_int64_of_int32, caml_int_compare = runtime.caml_int_compare, caml_lessequal = runtime.caml_lessequal, caml_lessthan = runtime.caml_lessthan, caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, caml_mul = runtime.caml_mul, caml_wrap_exception = runtime.caml_wrap_exception, + Stdlib_Int32 = caml_get_global("Stdlib__Int32"), + Stdlib_Int64 = caml_get_global("Stdlib__Int64"), Stdlib = caml_get_global("Stdlib"), Stdlib_Sys = caml_get_global("Stdlib__Sys"); function succ(n){ /*<>*/ return n + 1 | 0;} @@ -10556,7 +12059,7 @@ /*<>*/ return caml_greaterequal(n, 0) ? n : - n | 0 /*<>*/ ; } var - size = /*<>*/ Stdlib_Sys[10], + size = /*<>*/ Stdlib_Sys[11], min_int = /*<>*/ 1 << (size - 1 | 0), max_int = /*<>*/ min_int - 1 | 0; function lognot(n){ /*<>*/ return n ^ -1;} @@ -10606,7 +12109,7 @@ /*<>*/ if(caml_lessthan(d, 0)) /*<>*/ return unsigned_lt(n, d) ? zero : one /*<>*/ ; var - q = /*<>*/ runtime.caml_div(n >>> 1 | 0, d) << 1, + q = /*<>*/ caml_div(n >>> 1 | 0, d) << 1, r = /*<>*/ n - caml_mul(q, d) | 0; /*<>*/ return unsigned_lt(r, d) ? q : q + 1 | 0 /*<>*/ ; } @@ -10617,11 +12120,104 @@ ( /*<>*/ unsigned_div(n, d), d) | 0 /*<>*/ ; } + function fdiv(n, d){ + var q = /*<>*/ caml_div(n, d); + /*<>*/ if + (! + caml_greaterequal(n ^ d, 0) + && + ! + /*<>*/ caml_equal + (n, /*<>*/ caml_mul(q, d))) + /*<>*/ return q - 1 | 0; + /*<>*/ return q; + /*<>*/ } + function cdiv(n, d){ + var q = /*<>*/ caml_div(n, d); + /*<>*/ if + (! + caml_lessthan(n ^ d, 0) + && + ! + /*<>*/ caml_equal + (n, /*<>*/ caml_mul(q, d))) + /*<>*/ return q + 1 | 0; + /*<>*/ return q; + /*<>*/ } + function erem(n, d){ + var r = /*<>*/ runtime.caml_mod(n, d); + /*<>*/ return caml_greaterequal(r, 0) + ? r + : /*<>*/ caml_greaterequal + (d, 0) + ? r + d | 0 + : r - d | 0 /*<>*/ ; + } + function ediv(n, d){ + var + q = /*<>*/ caml_div(n, d), + r = /*<>*/ n - caml_mul(q, d) | 0; + /*<>*/ return caml_greaterequal(r, 0) + ? q + : /*<>*/ caml_greaterequal + (d, 0) + ? q - 1 | 0 + : q + 1 | 0 /*<>*/ ; + } + var + leading_zeros = + /*<>*/ 64 === size + ? function + (x){ + /*<>*/ return /*<>*/ Stdlib_Int64 + [27].call + (null, /*<>*/ caml_int64_of_int32(x)) /*<>*/ ; + } + : function + (x){ + /*<>*/ return Stdlib_Int32[27].call(null, x) /*<>*/ ; + }; + function unsigned_bitsize(x){ + /*<>*/ return size - leading_zeros(x) | 0 /*<>*/ ; + } + function leading_sign_bits(x){ + /*<>*/ return caml_greaterequal(x, 0) + ? /*<>*/ leading_zeros(x) - 1 | 0 + : /*<>*/ leading_zeros(x ^ -1) - 1 | 0 /*<>*/ ; + } + function signed_bitsize(x){ + /*<>*/ return size - leading_sign_bits(x) | 0 /*<>*/ ; + } + var + trailing_zeros = + /*<>*/ 64 === size + ? function + (x){ + /*<>*/ return /*<>*/ Stdlib_Int64 + [29].call + (null, /*<>*/ caml_int64_of_int32(x)) /*<>*/ ; + } + : function + (x){ + /*<>*/ return Stdlib_Int32[29].call(null, x) /*<>*/ ; + }, + popcount = + /*<>*/ 64 === size + ? function + (x){ + /*<>*/ return /*<>*/ Stdlib_Int64 + [24].call + (null, /*<>*/ caml_int64_of_int32(x)) /*<>*/ ; + } + : function + (x){ + /*<>*/ return Stdlib_Int32[24].call(null, x) /*<>*/ ; + }; function seeded_hash(seed, x){ - /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; } function hash(x){ - /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; } /*<>*/ runtime.caml_register_global ([0, @@ -10630,6 +12226,10 @@ -1, unsigned_div, unsigned_rem, + fdiv, + cdiv, + ediv, + erem, succ, pred, abs, @@ -10645,6 +12245,12 @@ equal, min, max, + popcount, + unsigned_bitsize, + signed_bitsize, + leading_zeros, + leading_sign_bits, + trailing_zeros, seeded_hash, hash], "Stdlib__Nativeint"); @@ -10735,12 +12341,12 @@ var newlen = /*<>*/ /*<>*/ Stdlib_Int - [10].call + [14].call (null, 2 * /*<>*/ caml_ml_bytes_length(lexbuf[2]) | 0, - Stdlib_Sys[13]); + Stdlib_Sys[14]); /*<>*/ if (newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0)) /*<>*/ Stdlib[2].call @@ -11219,126 +12825,126 @@ Assert_failure = runtime.caml_get_global_predef("Assert_failure"), _a_ = [0, 0, 0, 0], _b_ = [0, 0, 0], - _c_ = [0, "set.ml", 571, 18], + _c_ = [0, "set.ml", 576, 18], Stdlib_Set = [0, function(Ord){ function height(param){ - /*<>*/ if(! param) /*<>*/ return 0; - var h = /*<>*/ param[4]; - /*<>*/ return h; - /*<>*/ } + /*<>*/ if(! param) /*<>*/ return 0; + var h = /*<>*/ param[4]; + /*<>*/ return h; + /*<>*/ } function create(l, v, r){ - /*<>*/ if(l) - var h = l[4], hl = /*<>*/ h; + /*<>*/ if(l) + var h = l[4], hl = /*<>*/ h; else - /*<>*/ hl = 0; - /*<>*/ if(r) - var h$0 = r[4], hr = /*<>*/ h$0; + /*<>*/ hl = 0; + /*<>*/ if(r) + var h$0 = r[4], hr = /*<>*/ h$0; else - /*<>*/ hr = 0; - var _j_ = /*<>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0; + /*<>*/ hr = 0; + var _j_ = /*<>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0; return [0, l, v, r, _j_]; - /*<>*/ } + /*<>*/ } function bal(l, v, r){ - /*<>*/ if(l) - var h = l[4], hl = /*<>*/ h; + /*<>*/ if(l) + var h = l[4], hl = /*<>*/ h; else - /*<>*/ hl = 0; - /*<>*/ if(r) - var h$0 = r[4], hr = /*<>*/ h$0; + /*<>*/ hl = 0; + /*<>*/ if(r) + var h$0 = r[4], hr = /*<>*/ h$0; else - /*<>*/ hr = 0; + /*<>*/ hr = 0; var _i_ = /*<>*/ "Set.bal"; - /*<>*/ if((hr + 2 | 0) < hl){ - /*<>*/ if(! l) - /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; + /*<>*/ if((hr + 2 | 0) < hl){ + /*<>*/ if(! l) + /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; var - lr = /*<>*/ l[3], + lr = /*<>*/ l[3], lv = l[2], ll = l[1], - _j_ = /*<>*/ height(lr); - /*<>*/ if(_j_ <= height(ll)) - /*<>*/ return /*<>*/ create - (ll, lv, /*<>*/ create(lr, v, r)) /*<>*/ ; - /*<>*/ if(! lr) - /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; + _j_ = /*<>*/ height(lr); + /*<>*/ if(_j_ <= height(ll)) + /*<>*/ return /*<>*/ create + (ll, lv, /*<>*/ create(lr, v, r)) /*<>*/ ; + /*<>*/ if(! lr) + /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; var - lrr = /*<>*/ lr[3], + lrr = /*<>*/ lr[3], lrv = lr[2], lrl = lr[1], - _i_ = /*<>*/ create(lrr, v, r); - /*<>*/ return /*<>*/ create - ( /*<>*/ create(ll, lv, lrl), lrv, _i_) /*<>*/ ; + _i_ = /*<>*/ create(lrr, v, r); + /*<>*/ return /*<>*/ create + ( /*<>*/ create(ll, lv, lrl), lrv, _i_) /*<>*/ ; } - /*<>*/ if((hl + 2 | 0) >= hr){ - /*<>*/ _i_ = hr <= hl ? hl + 1 | 0 : hr + 1 | 0; + /*<>*/ if((hl + 2 | 0) >= hr){ + /*<>*/ _i_ = hr <= hl ? hl + 1 | 0 : hr + 1 | 0; return [0, l, v, r, _i_]; } - /*<>*/ if(! r) - /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; + /*<>*/ if(! r) + /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; var - rr = /*<>*/ r[3], + rr = /*<>*/ r[3], rv = r[2], rl = r[1], - _j_ = /*<>*/ height(rl); - /*<>*/ if(_j_ <= height(rr)) - /*<>*/ return /*<>*/ create - ( /*<>*/ create(l, v, rl), rv, rr) /*<>*/ ; - /*<>*/ if(! rl) - /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; + _j_ = /*<>*/ height(rl); + /*<>*/ if(_j_ <= height(rr)) + /*<>*/ return /*<>*/ create + ( /*<>*/ create(l, v, rl), rv, rr) /*<>*/ ; + /*<>*/ if(! rl) + /*<>*/ return Stdlib[1].call(null, _i_) /*<>*/ ; var - rlr = /*<>*/ rl[3], + rlr = /*<>*/ rl[3], rlv = rl[2], rll = rl[1], - _i_ = /*<>*/ create(rlr, rv, rr); - /*<>*/ return /*<>*/ create - ( /*<>*/ create(l, v, rll), rlv, _i_) /*<>*/ ; + _i_ = /*<>*/ create(rlr, rv, rr); + /*<>*/ return /*<>*/ create + ( /*<>*/ create(l, v, rll), rlv, _i_) /*<>*/ ; } function add(x, t){ - /*<>*/ if(! t) - /*<>*/ return [0, 0, x, 0, 1]; + /*<>*/ if(! t) + /*<>*/ return [0, 0, x, 0, 1]; var - r = /*<>*/ t[3], + r = /*<>*/ t[3], v = t[2], l = t[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) /*<>*/ return t; - /*<>*/ if(0 <= c){ - var rr = /*<>*/ add(x, r); - /*<>*/ return r === rr + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) /*<>*/ return t; + /*<>*/ if(0 <= c){ + var rr = /*<>*/ add(x, r); + /*<>*/ return r === rr ? t - : /*<>*/ bal(l, v, rr) /*<>*/ ; + : /*<>*/ bal(l, v, rr) /*<>*/ ; } - var ll = /*<>*/ add(x, l); - /*<>*/ return l === ll + var ll = /*<>*/ add(x, l); + /*<>*/ return l === ll ? t - : /*<>*/ bal(ll, v, r) /*<>*/ ; + : /*<>*/ bal(ll, v, r) /*<>*/ ; } function singleton(x){ - /*<>*/ return [0, 0, x, 0, 1]; - /*<>*/ } + /*<>*/ return [0, 0, x, 0, 1]; + /*<>*/ } function add_min_element(x, param){ - /*<>*/ if(! param) - /*<>*/ return singleton(x) /*<>*/ ; - var r = /*<>*/ param[3], v = param[2], l = param[1]; - /*<>*/ return /*<>*/ bal - ( /*<>*/ add_min_element(x, l), v, r) /*<>*/ ; + /*<>*/ if(! param) + /*<>*/ return singleton(x) /*<>*/ ; + var r = /*<>*/ param[3], v = param[2], l = param[1]; + /*<>*/ return /*<>*/ bal + ( /*<>*/ add_min_element(x, l), v, r) /*<>*/ ; } function add_max_element(x, param){ - /*<>*/ if(! param) - /*<>*/ return singleton(x) /*<>*/ ; - var r = /*<>*/ param[3], v = param[2], l = param[1]; - /*<>*/ return /*<>*/ bal - (l, v, /*<>*/ add_max_element(x, r)) /*<>*/ ; + /*<>*/ if(! param) + /*<>*/ return singleton(x) /*<>*/ ; + var r = /*<>*/ param[3], v = param[2], l = param[1]; + /*<>*/ return /*<>*/ bal + (l, v, /*<>*/ add_max_element(x, r)) /*<>*/ ; } function join(l, v, r){ - /*<>*/ if(! l) - /*<>*/ return add_min_element(v, r) /*<>*/ ; - /*<>*/ if(! r) - /*<>*/ return add_max_element(v, l) /*<>*/ ; + /*<>*/ if(! l) + /*<>*/ return add_min_element(v, r) /*<>*/ ; + /*<>*/ if(! r) + /*<>*/ return add_max_element(v, l) /*<>*/ ; var - rh = /*<>*/ r[4], + rh = /*<>*/ r[4], rr = r[3], rv = r[2], rl = r[1], @@ -11346,143 +12952,148 @@ lr = l[3], lv = l[2], ll = l[1]; - /*<>*/ return (rh + 2 | 0) < lh - ? /*<>*/ bal - (ll, lv, /*<>*/ join(lr, v, r)) + /*<>*/ return (rh + 2 | 0) < lh + ? /*<>*/ bal + (ll, lv, /*<>*/ join(lr, v, r)) : (lh + 2 | 0) < rh - ? /*<>*/ bal - ( /*<>*/ join(l, v, rl), rv, rr) - : /*<>*/ create(l, v, r) /*<>*/ ; + ? /*<>*/ bal + ( /*<>*/ join(l, v, rl), rv, rr) + : /*<>*/ create(l, v, r) /*<>*/ ; } function min_elt(_i_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _i_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - var l = /*<>*/ _i_[1]; - if(! l){var v = _i_[2]; /*<>*/ return v;} - /*<>*/ _i_ = l; + var l = /*<>*/ _i_[1]; + if(! l){var v = _i_[2]; /*<>*/ return v;} + /*<>*/ _i_ = l; } - /*<>*/ } + /*<>*/ } function min_elt_opt(_i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; - var l = /*<>*/ _i_[1]; - if(! l){var v = _i_[2]; /*<>*/ return [0, v];} - /*<>*/ _i_ = l; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; + var l = /*<>*/ _i_[1]; + if(! l){var v = _i_[2]; /*<>*/ return [0, v];} + /*<>*/ _i_ = l; } - /*<>*/ } + /*<>*/ } function max_elt(_i_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _i_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - /*<>*/ if(! _i_[3]){ + /*<>*/ if(! _i_[3]){ var v = _i_[2]; - /*<>*/ return v; + /*<>*/ return v; } - var r = /*<>*/ _i_[3]; - /*<>*/ _i_ = r; + var r = /*<>*/ _i_[3]; + /*<>*/ _i_ = r; } - /*<>*/ } + /*<>*/ } function max_elt_opt(_i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; - /*<>*/ if(! _i_[3]){ + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; + /*<>*/ if(! _i_[3]){ var v = _i_[2]; - /*<>*/ return [0, v]; + /*<>*/ return [0, v]; } - var r = /*<>*/ _i_[3]; - /*<>*/ _i_ = r; + var r = /*<>*/ _i_[3]; + /*<>*/ _i_ = r; } - /*<>*/ } + /*<>*/ } function remove_min_elt(param){ - /*<>*/ if(! param) - /*<>*/ return Stdlib[1].call - (null, "Set.remove_min_elt") /*<>*/ ; - var l = /*<>*/ param[1]; + /*<>*/ if(! param) + /*<>*/ return Stdlib[1].call + (null, "Set.remove_min_elt") /*<>*/ ; + var l = /*<>*/ param[1]; if(l){ var r = param[3], v = param[2]; - /*<>*/ return /*<>*/ bal - ( /*<>*/ remove_min_elt(l), v, r) /*<>*/ ; + /*<>*/ return /*<>*/ bal + ( /*<>*/ remove_min_elt(l), v, r) /*<>*/ ; } - var r$0 = /*<>*/ param[3]; - /*<>*/ return r$0; - /*<>*/ } + var r$0 = /*<>*/ param[3]; + /*<>*/ return r$0; + /*<>*/ } function concat(t1, t2){ - /*<>*/ if(! t1) /*<>*/ return t2; - /*<>*/ if(! t2) /*<>*/ return t1; - var _i_ = /*<>*/ remove_min_elt(t2); - /*<>*/ return /*<>*/ join - (t1, /*<>*/ min_elt(t2), _i_) /*<>*/ ; + /*<>*/ if(! t1) /*<>*/ return t2; + /*<>*/ if(! t2) /*<>*/ return t1; + var _i_ = /*<>*/ remove_min_elt(t2); + /*<>*/ return /*<>*/ join + (t1, /*<>*/ min_elt(t2), _i_) /*<>*/ ; } function split(x, _i_){ - /*<>*/ if(! _i_) /*<>*/ return _a_; + /*<>*/ if(! _i_) /*<>*/ return _a_; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) - /*<>*/ return [0, l, 1, r]; - /*<>*/ if(0 <= c){ - /*<>*/ _i_ = split(x, r); - var rr = /*<>*/ _i_[3], pres = _i_[2], lr = _i_[1]; - /*<>*/ return [0, join(l, v, lr), pres, rr] /*<>*/ ; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) + /*<>*/ return [0, l, 1, r]; + /*<>*/ if(0 <= c){ + /*<>*/ _i_ = split(x, r); + var rr = /*<>*/ _i_[3], pres = _i_[2], lr = _i_[1]; + /*<>*/ return [0, join(l, v, lr), pres, rr] /*<>*/ ; } - /*<>*/ _i_ = split(x, l); - var rl = /*<>*/ _i_[3], pres$0 = _i_[2], ll = _i_[1]; - /*<>*/ return [0, ll, pres$0, join(rl, v, r)] /*<>*/ ; - /*<>*/ } + /*<>*/ _i_ = split(x, l); + var rl = /*<>*/ _i_[3], pres$0 = _i_[2], ll = _i_[1]; + /*<>*/ return [0, ll, pres$0, join(rl, v, r)] /*<>*/ ; + /*<>*/ } function is_empty(param){ - /*<>*/ return param ? 0 : 1 /*<>*/ ; + /*<>*/ return param ? 0 : 1 /*<>*/ ; } + function is_singleton(param){ + /*<>*/ if(param && ! param[1] && ! param[3]) + /*<>*/ return 1; + /*<>*/ return 0; + /*<>*/ } function mem(x, _i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - c = /*<>*/ caml_call2(Ord[1], x, v), - _i_ = /*<>*/ 0 === c ? 1 : 0; + c = /*<>*/ caml_call2(Ord[1], x, v), + _i_ = /*<>*/ 0 === c ? 1 : 0; if(_i_) return _i_; _i_ = 0 <= c ? r : l; } - /*<>*/ } + /*<>*/ } function remove(x, t){ - /*<>*/ if(! t) /*<>*/ return 0; + /*<>*/ if(! t) /*<>*/ return 0; var - t2 = /*<>*/ t[3], + t2 = /*<>*/ t[3], v = t[2], t1 = t[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c){ - /*<>*/ if(! t1) /*<>*/ return t2; - /*<>*/ if(! t2) /*<>*/ return t1; - var _i_ = /*<>*/ remove_min_elt(t2); - /*<>*/ return /*<>*/ bal - (t1, /*<>*/ min_elt(t2), _i_) /*<>*/ ; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c){ + /*<>*/ if(! t1) /*<>*/ return t2; + /*<>*/ if(! t2) /*<>*/ return t1; + var _i_ = /*<>*/ remove_min_elt(t2); + /*<>*/ return /*<>*/ bal + (t1, /*<>*/ min_elt(t2), _i_) /*<>*/ ; } - /*<>*/ if(0 <= c){ - var rr = /*<>*/ remove(x, t2); - /*<>*/ return t2 === rr + /*<>*/ if(0 <= c){ + var rr = /*<>*/ remove(x, t2); + /*<>*/ return t2 === rr ? t - : /*<>*/ bal(t1, v, rr) /*<>*/ ; + : /*<>*/ bal(t1, v, rr) /*<>*/ ; } - var ll = /*<>*/ remove(x, t1); - /*<>*/ return t1 === ll + var ll = /*<>*/ remove(x, t1); + /*<>*/ return t1 === ll ? t - : /*<>*/ bal(ll, v, t2) /*<>*/ ; + : /*<>*/ bal(ll, v, t2) /*<>*/ ; } function union(s1, s2){ - /*<>*/ if(! s1) /*<>*/ return s2; - /*<>*/ if(! s2) /*<>*/ return s1; + /*<>*/ if(! s1) /*<>*/ return s2; + /*<>*/ if(! s2) /*<>*/ return s1; var - h2 = /*<>*/ s2[4], + h2 = /*<>*/ s2[4], r2 = s2[3], v2 = s2[2], l2 = s2[1], @@ -11490,539 +13101,539 @@ r1 = s1[3], v1 = s1[2], l1 = s1[1]; - /*<>*/ if(h2 <= h1){ - /*<>*/ if(1 === h2) - /*<>*/ return add(v2, s1) /*<>*/ ; + /*<>*/ if(h2 <= h1){ + /*<>*/ if(1 === h2) + /*<>*/ return add(v2, s1) /*<>*/ ; var - _i_ = /*<>*/ split(v1, s2), - r2$0 = /*<>*/ _i_[3], + _i_ = /*<>*/ split(v1, s2), + r2$0 = /*<>*/ _i_[3], l2$0 = _i_[1], - _i_ = /*<>*/ union(r1, r2$0); - /*<>*/ return /*<>*/ join - ( /*<>*/ union(l1, l2$0), v1, _i_) /*<>*/ ; + _i_ = /*<>*/ union(r1, r2$0); + /*<>*/ return /*<>*/ join + ( /*<>*/ union(l1, l2$0), v1, _i_) /*<>*/ ; } - /*<>*/ if(1 === h1) - /*<>*/ return add(v1, s2) /*<>*/ ; - /*<>*/ _i_ = split(v2, s1); + /*<>*/ if(1 === h1) + /*<>*/ return add(v1, s2) /*<>*/ ; + /*<>*/ _i_ = split(v2, s1); var - r1$0 = /*<>*/ _i_[3], + r1$0 = /*<>*/ _i_[3], l1$0 = _i_[1], - _i_ = /*<>*/ union(r1$0, r2); - /*<>*/ return /*<>*/ join - ( /*<>*/ union(l1$0, l2), v2, _i_) /*<>*/ ; + _i_ = /*<>*/ union(r1$0, r2); + /*<>*/ return /*<>*/ join + ( /*<>*/ union(l1$0, l2), v2, _i_) /*<>*/ ; } function inter(s1, s2){ - /*<>*/ if(! s1) /*<>*/ return 0; - /*<>*/ if(! s2) /*<>*/ return 0; + /*<>*/ if(! s1) /*<>*/ return 0; + /*<>*/ if(! s2) /*<>*/ return 0; var - r1 = /*<>*/ s1[3], + r1 = /*<>*/ s1[3], v1 = s1[2], l1 = s1[1], - _i_ = /*<>*/ split(v1, s2), - l2 = /*<>*/ _i_[1]; + _i_ = /*<>*/ split(v1, s2), + l2 = /*<>*/ _i_[1]; if(_i_[2]){ - var r2 = _i_[3], _i_ = /*<>*/ inter(r1, r2); - /*<>*/ return /*<>*/ join - ( /*<>*/ inter(l1, l2), v1, _i_) /*<>*/ ; + var r2 = _i_[3], _i_ = /*<>*/ inter(r1, r2); + /*<>*/ return /*<>*/ join + ( /*<>*/ inter(l1, l2), v1, _i_) /*<>*/ ; } var - r2$0 = /*<>*/ _i_[3], - _i_ = /*<>*/ inter(r1, r2$0); - /*<>*/ return /*<>*/ concat - ( /*<>*/ inter(l1, l2), _i_) /*<>*/ ; + r2$0 = /*<>*/ _i_[3], + _i_ = /*<>*/ inter(r1, r2$0); + /*<>*/ return /*<>*/ concat + ( /*<>*/ inter(l1, l2), _i_) /*<>*/ ; } function split_bis(x, _i_){ - /*<>*/ if(! _i_) - /*<>*/ return [0, + /*<>*/ if(! _i_) + /*<>*/ return [0, 0, function(param){ - /*<>*/ return 0; - /*<>*/ }] /*<>*/ ; + /*<>*/ return 0; + /*<>*/ }] /*<>*/ ; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) /*<>*/ return 0; - /*<>*/ if(0 <= c){ - /*<>*/ _i_ = split_bis(x, r); - /*<>*/ if(! _i_) /*<>*/ return 0; - var rr = /*<>*/ _i_[2], lr = _i_[1]; - /*<>*/ return [0, join(l, v, lr), rr] /*<>*/ ; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) /*<>*/ return 0; + /*<>*/ if(0 <= c){ + /*<>*/ _i_ = split_bis(x, r); + /*<>*/ if(! _i_) /*<>*/ return 0; + var rr = /*<>*/ _i_[2], lr = _i_[1]; + /*<>*/ return [0, join(l, v, lr), rr] /*<>*/ ; } - /*<>*/ _i_ = split_bis(x, l); - /*<>*/ if(! _i_) /*<>*/ return 0; - var rl = /*<>*/ _i_[2], ll = _i_[1]; - /*<>*/ return [0, + /*<>*/ _i_ = split_bis(x, l); + /*<>*/ if(! _i_) /*<>*/ return 0; + var rl = /*<>*/ _i_[2], ll = _i_[1]; + /*<>*/ return [0, ll, function(param){ - /*<>*/ return /*<>*/ join - ( /*<>*/ rl(0), v, r) /*<>*/ ; - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return /*<>*/ join + ( /*<>*/ rl(0), v, r) /*<>*/ ; + }] /*<>*/ ; + /*<>*/ } function disjoint(s1$0, s2$1){ - var s1 = /*<>*/ s1$0, s2 = s2$1; + var s1 = /*<>*/ s1$0, s2 = s2$1; for(;;){ if(s1 && s2){ var r1 = s1[3], v1 = s1[2], l1 = s1[1]; - /*<>*/ if(s1 === s2) - /*<>*/ return 0; - var _i_ = /*<>*/ split_bis(v1, s2); - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ if(s1 === s2) + /*<>*/ return 0; + var _i_ = /*<>*/ split_bis(v1, s2); + /*<>*/ if(! _i_) /*<>*/ return 0; var - r2 = /*<>*/ _i_[2], + r2 = /*<>*/ _i_[2], l2 = _i_[1], - _i_ = /*<>*/ disjoint(l1, l2); - /*<>*/ if(! _i_) return _i_; - var s2$0 = /*<>*/ r2(0); - /*<>*/ s1 = r1; + _i_ = /*<>*/ disjoint(l1, l2); + /*<>*/ if(! _i_) return _i_; + var s2$0 = /*<>*/ r2(0); + /*<>*/ s1 = r1; s2 = s2$0; continue; } - /*<>*/ return 1; + /*<>*/ return 1; } - /*<>*/ } + /*<>*/ } function diff(s1, s2){ - /*<>*/ if(! s1) /*<>*/ return 0; - /*<>*/ if(! s2) /*<>*/ return s1; + /*<>*/ if(! s1) /*<>*/ return 0; + /*<>*/ if(! s2) /*<>*/ return s1; var - r1 = /*<>*/ s1[3], + r1 = /*<>*/ s1[3], v1 = s1[2], l1 = s1[1], - _i_ = /*<>*/ split(v1, s2), - l2 = /*<>*/ _i_[1]; + _i_ = /*<>*/ split(v1, s2), + l2 = /*<>*/ _i_[1]; if(_i_[2]){ - var r2 = _i_[3], _i_ = /*<>*/ diff(r1, r2); - /*<>*/ return /*<>*/ concat - ( /*<>*/ diff(l1, l2), _i_) /*<>*/ ; + var r2 = _i_[3], _i_ = /*<>*/ diff(r1, r2); + /*<>*/ return /*<>*/ concat + ( /*<>*/ diff(l1, l2), _i_) /*<>*/ ; } var - r2$0 = /*<>*/ _i_[3], - _i_ = /*<>*/ diff(r1, r2$0); - /*<>*/ return /*<>*/ join - ( /*<>*/ diff(l1, l2), v1, _i_) /*<>*/ ; + r2$0 = /*<>*/ _i_[3], + _i_ = /*<>*/ diff(r1, r2$0); + /*<>*/ return /*<>*/ join + ( /*<>*/ diff(l1, l2), v1, _i_) /*<>*/ ; } function cons_enum(s$0, e$1){ - var s = /*<>*/ s$0, e = e$1; + var s = /*<>*/ s$0, e = e$1; for(;;){ - if(! s) /*<>*/ return e; + if(! s) /*<>*/ return e; var - r = /*<>*/ s[3], + r = /*<>*/ s[3], v = s[2], l = s[1], - e$0 = /*<>*/ [0, v, r, e]; + e$0 = /*<>*/ [0, v, r, e]; s = l; e = e$0; } - /*<>*/ } + /*<>*/ } function compare(s1, s2){ var - e2$2 = /*<>*/ cons_enum(s2, 0), - e1$2 = /*<>*/ cons_enum(s1, 0), - e1 = /*<>*/ e1$2, + e2$2 = /*<>*/ cons_enum(s2, 0), + e1$2 = /*<>*/ cons_enum(s1, 0), + e1 = /*<>*/ e1$2, e2 = e2$2; for(;;){ - /*<>*/ if(! e1) - return e2 ? -1 : 0 /*<>*/ ; - /*<>*/ if(! e2) /*<>*/ return 1; + /*<>*/ if(! e1) + return e2 ? -1 : 0 /*<>*/ ; + /*<>*/ if(! e2) /*<>*/ return 1; var - e2$0 = /*<>*/ e2[3], + e2$0 = /*<>*/ e2[3], r2 = e2[2], v2 = e2[1], e1$0 = e1[3], r1 = e1[2], v1 = e1[1], - c = /*<>*/ caml_call2(Ord[1], v1, v2); - /*<>*/ if(0 !== c) /*<>*/ return c; + c = /*<>*/ caml_call2(Ord[1], v1, v2); + /*<>*/ if(0 !== c) /*<>*/ return c; var - e2$1 = /*<>*/ cons_enum(r2, e2$0), - e1$1 = /*<>*/ cons_enum(r1, e1$0); - /*<>*/ e1 = e1$1; + e2$1 = /*<>*/ cons_enum(r2, e2$0), + e1$1 = /*<>*/ cons_enum(r1, e1$0); + /*<>*/ e1 = e1$1; e2 = e2$1; } - /*<>*/ } + /*<>*/ } function equal(s1, s2){ - /*<>*/ return 0 === compare(s1, s2) ? 1 : 0 /*<>*/ ; - /*<>*/ } + /*<>*/ return 0 === compare(s1, s2) ? 1 : 0 /*<>*/ ; + /*<>*/ } function subset(s1$0, s2$0){ - var s1 = /*<>*/ s1$0, s2 = s2$0; + var s1 = /*<>*/ s1$0, s2 = s2$0; for(;;){ - if(! s1) /*<>*/ return 1; - /*<>*/ if(! s2) /*<>*/ return 0; + if(! s1) /*<>*/ return 1; + /*<>*/ if(! s2) /*<>*/ return 0; var - r2 = /*<>*/ s2[3], + r2 = /*<>*/ s2[3], v2 = s2[2], l2 = s2[1], r1 = s1[3], v1 = s1[2], l1 = s1[1], - c = /*<>*/ caml_call2(Ord[1], v1, v2); - /*<>*/ if(0 === c){ - var _i_ = /*<>*/ subset(l1, l2); - /*<>*/ if(! _i_) return _i_; + c = /*<>*/ caml_call2(Ord[1], v1, v2); + /*<>*/ if(0 === c){ + var _i_ = /*<>*/ subset(l1, l2); + /*<>*/ if(! _i_) return _i_; s1 = r1; s2 = r2; } else if(0 <= c){ - /*<>*/ _i_ = subset([0, 0, v1, r1, 0], r2); - /*<>*/ if(! _i_) return _i_; + /*<>*/ _i_ = subset([0, 0, v1, r1, 0], r2); + /*<>*/ if(! _i_) return _i_; s1 = l1; } else{ - /*<>*/ _i_ = subset([0, l1, v1, 0, 0], l2); - /*<>*/ if(! _i_) return _i_; + /*<>*/ _i_ = subset([0, l1, v1, 0, 0], l2); + /*<>*/ if(! _i_) return _i_; s1 = r1; } } - /*<>*/ } + /*<>*/ } function iter(f, _i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; - var r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1]; - /*<>*/ iter(f, l); - /*<>*/ caml_call1(f, v); - /*<>*/ _i_ = r; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; + var r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1]; + /*<>*/ iter(f, l); + /*<>*/ caml_call1(f, v); + /*<>*/ _i_ = r; } - /*<>*/ } + /*<>*/ } function fold(f, s$0, accu$1){ - var s = /*<>*/ s$0, accu = accu$1; + var s = /*<>*/ s$0, accu = accu$1; for(;;){ - if(! s) /*<>*/ return accu; + if(! s) /*<>*/ return accu; var - r = /*<>*/ s[3], + r = /*<>*/ s[3], v = s[2], l = s[1], accu$0 = - /*<>*/ /*<>*/ caml_call2 - (f, v, /*<>*/ fold(f, l, accu)); - /*<>*/ s = r; + /*<>*/ /*<>*/ caml_call2 + (f, v, /*<>*/ fold(f, l, accu)); + /*<>*/ s = r; accu = accu$0; } } function for_all(p, _i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 1; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 1; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - _i_ = /*<>*/ caml_call1(p, v); - /*<>*/ if(_i_){ - /*<>*/ _i_ = for_all(p, l); - /*<>*/ if(_i_){_i_ = r; continue;} + _i_ = /*<>*/ caml_call1(p, v); + /*<>*/ if(_i_){ + /*<>*/ _i_ = for_all(p, l); + /*<>*/ if(_i_){_i_ = r; continue;} } - /*<>*/ return _i_; + /*<>*/ return _i_; } - /*<>*/ } + /*<>*/ } function exists(p, _i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - _i_ = /*<>*/ caml_call1(p, v); - /*<>*/ if(_i_) + _i_ = /*<>*/ caml_call1(p, v); + /*<>*/ if(_i_) ; else{ - /*<>*/ _i_ = exists(p, l); - /*<>*/ if(! _i_){_i_ = r; continue;} + /*<>*/ _i_ = exists(p, l); + /*<>*/ if(! _i_){_i_ = r; continue;} } - /*<>*/ return _i_; + /*<>*/ return _i_; } - /*<>*/ } + /*<>*/ } function filter(p, t){ - /*<>*/ if(! t) /*<>*/ return 0; + /*<>*/ if(! t) /*<>*/ return 0; var - r = /*<>*/ t[3], + r = /*<>*/ t[3], v = t[2], l = t[1], - l$0 = /*<>*/ filter(p, l), - pv = /*<>*/ caml_call1(p, v), - r$0 = /*<>*/ filter(p, r); - /*<>*/ if(! pv) - /*<>*/ return concat(l$0, r$0) /*<>*/ ; - /*<>*/ if(l === l$0 && r === r$0) - /*<>*/ return t; - /*<>*/ return join(l$0, v, r$0) /*<>*/ ; + l$0 = /*<>*/ filter(p, l), + pv = /*<>*/ caml_call1(p, v), + r$0 = /*<>*/ filter(p, r); + /*<>*/ if(! pv) + /*<>*/ return concat(l$0, r$0) /*<>*/ ; + /*<>*/ if(l === l$0 && r === r$0) + /*<>*/ return t; + /*<>*/ return join(l$0, v, r$0) /*<>*/ ; } function partition(p, _i_){ - /*<>*/ if(! _i_) /*<>*/ return _b_; + /*<>*/ if(! _i_) /*<>*/ return _b_; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - _i_ = /*<>*/ partition(p, l), - lf = /*<>*/ _i_[2], + _i_ = /*<>*/ partition(p, l), + lf = /*<>*/ _i_[2], lt = _i_[1], - pv = /*<>*/ caml_call1(p, v), - _i_ = /*<>*/ partition(p, r), - rf = /*<>*/ _i_[2], + pv = /*<>*/ caml_call1(p, v), + _i_ = /*<>*/ partition(p, r), + rf = /*<>*/ _i_[2], rt = _i_[1]; - /*<>*/ if(pv){ - /*<>*/ _i_ = concat(lf, rf); - /*<>*/ return [0, join(lt, v, rt), _i_] /*<>*/ ; + /*<>*/ if(pv){ + /*<>*/ _i_ = concat(lf, rf); + /*<>*/ return [0, join(lt, v, rt), _i_] /*<>*/ ; } - /*<>*/ _i_ = join(lf, v, rf); - /*<>*/ return [0, concat(lt, rt), _i_] /*<>*/ ; - /*<>*/ } + /*<>*/ _i_ = join(lf, v, rf); + /*<>*/ return [0, concat(lt, rt), _i_] /*<>*/ ; + /*<>*/ } function cardinal(_i_){ - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ if(! _i_) /*<>*/ return 0; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], l = _i_[1], - _i_ = /*<>*/ cardinal(r); - /*<>*/ return (cardinal(l) + 1 | 0) + _i_ | 0 /*<>*/ ; - /*<>*/ } + _i_ = /*<>*/ cardinal(r); + /*<>*/ return (cardinal(l) + 1 | 0) + _i_ | 0 /*<>*/ ; + /*<>*/ } function elements_aux(accu$1, _i_){ - var accu = /*<>*/ accu$1; + var accu = /*<>*/ accu$1; for(;;){ - if(! _i_) /*<>*/ return accu; + if(! _i_) /*<>*/ return accu; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - accu$0 = /*<>*/ [0, v, elements_aux(accu, r)]; - /*<>*/ accu = accu$0; + accu$0 = /*<>*/ [0, v, elements_aux(accu, r)]; + /*<>*/ accu = accu$0; _i_ = l; } - /*<>*/ } + /*<>*/ } function elements(s){ - /*<>*/ return elements_aux(0, s) /*<>*/ ; + /*<>*/ return elements_aux(0, s) /*<>*/ ; } function find(x, _i_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _i_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) /*<>*/ return v; - /*<>*/ _i_ = 0 <= c ? r : l; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) /*<>*/ return v; + /*<>*/ _i_ = 0 <= c ? r : l; } - /*<>*/ } + /*<>*/ } function find_first(f, _i_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _i_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - r$0 = /*<>*/ _i_[3], + r$0 = /*<>*/ _i_[3], v0$1 = _i_[2], l$0 = _i_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, _i_ = l$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, _i_ = l$0; break; } _i_ = r$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _i_) /*<>*/ return v0; - var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ for(;;){ + /*<>*/ if(! _i_) /*<>*/ return v0; + var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; _i_ = l; } else _i_ = r; } - /*<>*/ } + /*<>*/ } function find_first_opt(f, _i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; var - r$0 = /*<>*/ _i_[3], + r$0 = /*<>*/ _i_[3], v0$1 = _i_[2], l$0 = _i_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, _i_ = l$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, _i_ = l$0; break; } _i_ = r$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _i_) - /*<>*/ return [0, v0]; - var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ for(;;){ + /*<>*/ if(! _i_) + /*<>*/ return [0, v0]; + var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; _i_ = l; } else _i_ = r; } - /*<>*/ } + /*<>*/ } function find_last(f, _i_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _i_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - r$0 = /*<>*/ _i_[3], + r$0 = /*<>*/ _i_[3], v0$1 = _i_[2], l$0 = _i_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, _i_ = r$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, _i_ = r$0; break; } _i_ = l$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _i_) /*<>*/ return v0; - var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ for(;;){ + /*<>*/ if(! _i_) /*<>*/ return v0; + var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; _i_ = r; } else _i_ = l; } - /*<>*/ } + /*<>*/ } function find_last_opt(f, _i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; var - r$0 = /*<>*/ _i_[3], + r$0 = /*<>*/ _i_[3], v0$1 = _i_[2], l$0 = _i_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, _i_ = r$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, _i_ = r$0; break; } _i_ = l$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _i_) - /*<>*/ return [0, v0]; - var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ for(;;){ + /*<>*/ if(! _i_) + /*<>*/ return [0, v0]; + var r = /*<>*/ _i_[3], v0$0 = _i_[2], l = _i_[1]; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; _i_ = r; } else _i_ = l; } - /*<>*/ } + /*<>*/ } function find_opt(x, _i_){ - /*<>*/ for(;;){ - if(! _i_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _i_) /*<>*/ return 0; var - r = /*<>*/ _i_[3], + r = /*<>*/ _i_[3], v = _i_[2], l = _i_[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) - /*<>*/ return [0, v]; - /*<>*/ _i_ = 0 <= c ? r : l; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) + /*<>*/ return [0, v]; + /*<>*/ _i_ = 0 <= c ? r : l; } - /*<>*/ } + /*<>*/ } function try_join(l, v, r){ a: { - /*<>*/ if(0 !== l){ - var _i_ = /*<>*/ max_elt(l); - /*<>*/ if(0 <= caml_call2(Ord[1], _i_, v)) break a; + /*<>*/ if(0 !== l){ + var _i_ = /*<>*/ max_elt(l); + /*<>*/ if(0 <= caml_call2(Ord[1], _i_, v)) break a; } - /*<>*/ if(0 !== r){ - /*<>*/ _i_ = min_elt(r); - /*<>*/ if(0 <= caml_call2(Ord[1], v, _i_)) break a; + /*<>*/ if(0 !== r){ + /*<>*/ _i_ = min_elt(r); + /*<>*/ if(0 <= caml_call2(Ord[1], v, _i_)) break a; } - /*<>*/ return join(l, v, r) /*<>*/ ; + /*<>*/ return join(l, v, r) /*<>*/ ; } - /*<>*/ return /*<>*/ union - (l, /*<>*/ add(v, r)) /*<>*/ ; + /*<>*/ return /*<>*/ union + (l, /*<>*/ add(v, r)) /*<>*/ ; } function map(f, t){ - /*<>*/ if(! t) /*<>*/ return 0; + /*<>*/ if(! t) /*<>*/ return 0; var - r = /*<>*/ t[3], + r = /*<>*/ t[3], v = t[2], l = t[1], - l$0 = /*<>*/ map(f, l), - v$0 = /*<>*/ caml_call1(f, v), - r$0 = /*<>*/ map(f, r); - /*<>*/ if(l === l$0 && v === v$0 && r === r$0) - /*<>*/ return t; - /*<>*/ return try_join(l$0, v$0, r$0) /*<>*/ ; + l$0 = /*<>*/ map(f, l), + v$0 = /*<>*/ caml_call1(f, v), + r$0 = /*<>*/ map(f, r); + /*<>*/ if(l === l$0 && v === v$0 && r === r$0) + /*<>*/ return t; + /*<>*/ return try_join(l$0, v$0, r$0) /*<>*/ ; } function filter_map(f, t){ - /*<>*/ if(! t) /*<>*/ return 0; + /*<>*/ if(! t) /*<>*/ return 0; var - r = /*<>*/ t[3], + r = /*<>*/ t[3], v = t[2], l = t[1], - t1 = /*<>*/ filter_map(f, l), - v$0 = /*<>*/ caml_call1(f, v), - t2 = /*<>*/ filter_map(f, r); - /*<>*/ if(v$0){ + t1 = /*<>*/ filter_map(f, l), + v$0 = /*<>*/ caml_call1(f, v), + t2 = /*<>*/ filter_map(f, r); + /*<>*/ if(v$0){ var v$1 = v$0[1]; - /*<>*/ if(l === t1 && v === v$1 && r === t2) - /*<>*/ return t; - /*<>*/ return try_join(t1, v$1, t2) /*<>*/ ; + /*<>*/ if(l === t1 && v === v$1 && r === t2) + /*<>*/ return t; + /*<>*/ return try_join(t1, v$1, t2) /*<>*/ ; } - /*<>*/ if(! t1) /*<>*/ return t2; - /*<>*/ if(! t2) /*<>*/ return t1; - var _i_ = /*<>*/ remove_min_elt(t2); - /*<>*/ return /*<>*/ try_join - (t1, /*<>*/ min_elt(t2), _i_) /*<>*/ ; + /*<>*/ if(! t1) /*<>*/ return t2; + /*<>*/ if(! t2) /*<>*/ return t1; + var _i_ = /*<>*/ remove_min_elt(t2); + /*<>*/ return /*<>*/ try_join + (t1, /*<>*/ min_elt(t2), _i_) /*<>*/ ; } var empty = /*<>*/ 0; function of_list(l){ - /*<>*/ if(! l) /*<>*/ return empty; - var _h_ = /*<>*/ l[2], x0 = l[1]; + /*<>*/ if(! l) /*<>*/ return empty; + var _h_ = /*<>*/ l[2], x0 = l[1]; if(! _h_) - /*<>*/ return singleton(x0) /*<>*/ ; - var _i_ = /*<>*/ _h_[2], x1 = _h_[1]; + /*<>*/ return singleton(x0) /*<>*/ ; + var _i_ = /*<>*/ _h_[2], x1 = _h_[1]; if(! _i_) - /*<>*/ return /*<>*/ add - (x1, /*<>*/ singleton(x0)) /*<>*/ ; - /*<>*/ _h_ = _i_[2]; + /*<>*/ return /*<>*/ add + (x1, /*<>*/ singleton(x0)) /*<>*/ ; + /*<>*/ _h_ = _i_[2]; var x2 = _i_[1]; if(! _h_) - /*<>*/ return /*<>*/ add + /*<>*/ return /*<>*/ add (x2, - /*<>*/ add - (x1, /*<>*/ singleton(x0))) /*<>*/ ; - /*<>*/ _i_ = _h_[2]; + /*<>*/ add + (x1, /*<>*/ singleton(x0))) /*<>*/ ; + /*<>*/ _i_ = _h_[2]; var x3 = _h_[1]; if(! _i_) - /*<>*/ return /*<>*/ add + /*<>*/ return /*<>*/ add (x3, - /*<>*/ add + /*<>*/ add (x2, - /*<>*/ add - (x1, /*<>*/ singleton(x0)))) /*<>*/ ; - /*<>*/ if(_i_[2]){ + /*<>*/ add + (x1, /*<>*/ singleton(x0)))) /*<>*/ ; + /*<>*/ if(_i_[2]){ var - l$0 = /*<>*/ Stdlib_List[67].call(null, Ord[1], l), + l$0 = /*<>*/ Stdlib_List[69].call(null, Ord[1], l), sub = - /*<>*/ function(n, l){ - /*<>*/ if(3 >= n >>> 0) + /*<>*/ function(n, l){ + /*<>*/ if(3 >= n >>> 0) switch(n){ case 0: - /*<>*/ return [0, 0, l]; + /*<>*/ return [0, 0, l]; case 1: - /*<>*/ if(l){ + /*<>*/ if(l){ var l$3 = l[2], x0 = l[1]; - /*<>*/ return [0, [0, 0, x0, 0, 1], l$3]; + /*<>*/ return [0, [0, 0, x0, 0, 1], l$3]; } break; case 2: - /*<>*/ if(l){ + /*<>*/ if(l){ var _i_ = l[2]; if(_i_){ var l$4 = _i_[2], x1 = _i_[1], x0$0 = l[1]; - /*<>*/ return [0, + /*<>*/ return [0, [0, [0, 0, x0$0, 0, 1], x1, 0, 2], l$4]; } } break; default: - /*<>*/ if(l){ + /*<>*/ if(l){ _i_ = l[2]; if(_i_){ var match = _i_[2]; @@ -12032,7 +13643,7 @@ x2 = match[1], x1$0 = _i_[1], x0$1 = l[1]; - /*<>*/ return [0, + /*<>*/ return [0, [0, [0, 0, x0$1, 0, 1], x1$0, [0, 0, x2, 0, 1], 2], l$5]; } @@ -12040,119 +13651,119 @@ } } var - nl = /*<>*/ n / 2 | 0, - _i_ = /*<>*/ sub(nl, l), - l$0 = /*<>*/ _i_[2], + nl = /*<>*/ n / 2 | 0, + _i_ = /*<>*/ sub(nl, l), + l$0 = /*<>*/ _i_[2], left = _i_[1]; - /*<>*/ if(! l$0) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(! l$0) + /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _c_], 1); var - l$1 = /*<>*/ l$0[2], + l$1 = /*<>*/ l$0[2], mid = l$0[1], - _i_ = /*<>*/ sub((n - nl | 0) - 1 | 0, l$1), - l$2 = /*<>*/ _i_[2], + _i_ = /*<>*/ sub((n - nl | 0) - 1 | 0, l$1), + l$2 = /*<>*/ _i_[2], right = _i_[1]; - /*<>*/ return [0, create(left, mid, right), l$2] /*<>*/ ; - /*<>*/ }; - /*<>*/ return /*<>*/ sub - ( /*<>*/ Stdlib_List[1].call(null, l$0), l$0) - [1] /*<>*/ ; + /*<>*/ return [0, create(left, mid, right), l$2] /*<>*/ ; + /*<>*/ }; + /*<>*/ return /*<>*/ sub + ( /*<>*/ Stdlib_List[1].call(null, l$0), l$0) + [1] /*<>*/ ; } - var x4 = /*<>*/ _i_[1]; - /*<>*/ return /*<>*/ add + var x4 = /*<>*/ _i_[1]; + /*<>*/ return /*<>*/ add (x4, - /*<>*/ add + /*<>*/ add (x3, - /*<>*/ add + /*<>*/ add (x2, - /*<>*/ add - (x1, /*<>*/ singleton(x0))))) /*<>*/ ; + /*<>*/ add + (x1, /*<>*/ singleton(x0))))) /*<>*/ ; } function add_seq(i, m){ - /*<>*/ return Stdlib_Seq[5].call + /*<>*/ return Stdlib_Seq[5].call (null, function(s, x){ - /*<>*/ return add(x, s) /*<>*/ ; + /*<>*/ return add(x, s) /*<>*/ ; }, m, - i) /*<>*/ ; + i) /*<>*/ ; } function of_seq(i){ - /*<>*/ return add_seq(i, empty) /*<>*/ ; + /*<>*/ return add_seq(i, empty) /*<>*/ ; } function seq_of_enum(c, param){ - /*<>*/ if(! c) /*<>*/ return 0; + /*<>*/ if(! c) /*<>*/ return 0; var - rest = /*<>*/ c[3], + rest = /*<>*/ c[3], t = c[2], x = c[1], - _g_ = /*<>*/ cons_enum(t, rest); - /*<>*/ return [0, + _g_ = /*<>*/ cons_enum(t, rest); + /*<>*/ return [0, x, function(_h_){ - /*<>*/ return seq_of_enum(_g_, _h_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return seq_of_enum(_g_, _h_); + }] /*<>*/ ; + /*<>*/ } function to_seq(c){ - var _f_ = /*<>*/ cons_enum(c, 0); - /*<>*/ return function(_g_){ + var _f_ = /*<>*/ cons_enum(c, 0); + /*<>*/ return function(_g_){ return seq_of_enum(_f_, _g_);}; } function snoc_enum(s$0, e$1){ - var s = /*<>*/ s$0, e = e$1; + var s = /*<>*/ s$0, e = e$1; for(;;){ - if(! s) /*<>*/ return e; + if(! s) /*<>*/ return e; var - r = /*<>*/ s[3], + r = /*<>*/ s[3], v = s[2], l = s[1], - e$0 = /*<>*/ [0, v, l, e]; + e$0 = /*<>*/ [0, v, l, e]; s = r; e = e$0; } - /*<>*/ } + /*<>*/ } function rev_seq_of_enum(c, param){ - /*<>*/ if(! c) /*<>*/ return 0; + /*<>*/ if(! c) /*<>*/ return 0; var - rest = /*<>*/ c[3], + rest = /*<>*/ c[3], t = c[2], x = c[1], - _e_ = /*<>*/ snoc_enum(t, rest); - /*<>*/ return [0, + _e_ = /*<>*/ snoc_enum(t, rest); + /*<>*/ return [0, x, function(_f_){ - /*<>*/ return rev_seq_of_enum(_e_, _f_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return rev_seq_of_enum(_e_, _f_); + }] /*<>*/ ; + /*<>*/ } function to_rev_seq(c){ - var _d_ = /*<>*/ snoc_enum(c, 0); - /*<>*/ return function(_e_){ + var _d_ = /*<>*/ snoc_enum(c, 0); + /*<>*/ return function(_e_){ return rev_seq_of_enum(_d_, _e_);}; } function to_seq_from(low, s){ a: { - var s$0 = /*<>*/ s, c = 0; + var s$0 = /*<>*/ s, c = 0; for(;;){ - /*<>*/ if(! s$0){var _c_ = c; break a;} + /*<>*/ if(! s$0){var _c_ = c; break a;} var r = s$0[3], v = s$0[2], l = s$0[1], - n = /*<>*/ caml_call2(Ord[1], v, low); - /*<>*/ if(0 === n) break; - /*<>*/ if(0 <= n){ - var c$0 = /*<>*/ [0, v, r, c]; + n = /*<>*/ caml_call2(Ord[1], v, low); + /*<>*/ if(0 === n) break; + /*<>*/ if(0 <= n){ + var c$0 = /*<>*/ [0, v, r, c]; s$0 = l; c = c$0; } else - /*<>*/ s$0 = r; + /*<>*/ s$0 = r; } - /*<>*/ _c_ = [0, v, r, c]; + /*<>*/ _c_ = [0, v, r, c]; } - /*<>*/ return function(_d_){ + /*<>*/ return function(_d_){ return seq_of_enum(_c_, _d_);}; } /*<>*/ return [0, @@ -12186,6 +13797,7 @@ partition, split, is_empty, + is_singleton, mem, equal, compare, @@ -12236,535 +13848,540 @@ Stdlib_Seq = caml_get_global("Stdlib__Seq"), Stdlib_List = caml_get_global("Stdlib__List"), _a_ = [0, 0, 0, 0], - _b_ = [0, "map.ml", 408, 10], + _b_ = [0, "map.ml", 413, 10], _c_ = [0, 0, 0], Stdlib_Map = [0, function(Ord){ function height(param){ - /*<>*/ if(! param) /*<>*/ return 0; - var h = /*<>*/ param[5]; - /*<>*/ return h; - /*<>*/ } + /*<>*/ if(! param) /*<>*/ return 0; + var h = /*<>*/ param[5]; + /*<>*/ return h; + /*<>*/ } function create(l, x, d, r){ var - hl = /*<>*/ height(l), - hr = /*<>*/ height(r), - _k_ = /*<>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0; + hl = /*<>*/ height(l), + hr = /*<>*/ height(r), + _k_ = /*<>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0; return [0, l, x, d, r, _k_]; - /*<>*/ } + /*<>*/ } function singleton(x, d){ - /*<>*/ return [0, 0, x, d, 0, 1]; - /*<>*/ } + /*<>*/ return [0, 0, x, d, 0, 1]; + /*<>*/ } function bal(l, x, d, r){ - /*<>*/ if(l) - var h = l[5], hl = /*<>*/ h; + /*<>*/ if(l) + var h = l[5], hl = /*<>*/ h; else - /*<>*/ hl = 0; - /*<>*/ if(r) - var h$0 = r[5], hr = /*<>*/ h$0; + /*<>*/ hl = 0; + /*<>*/ if(r) + var h$0 = r[5], hr = /*<>*/ h$0; else - /*<>*/ hr = 0; + /*<>*/ hr = 0; var _j_ = /*<>*/ "Map.bal"; - /*<>*/ if((hr + 2 | 0) < hl){ - /*<>*/ if(! l) - /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; + /*<>*/ if((hr + 2 | 0) < hl){ + /*<>*/ if(! l) + /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; var - lr = /*<>*/ l[4], + lr = /*<>*/ l[4], ld = l[3], lv = l[2], ll = l[1], - _k_ = /*<>*/ height(lr); - /*<>*/ if(_k_ <= height(ll)) - /*<>*/ return /*<>*/ create - (ll, lv, ld, /*<>*/ create(lr, x, d, r)) /*<>*/ ; - /*<>*/ if(! lr) - /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; + _k_ = /*<>*/ height(lr); + /*<>*/ if(_k_ <= height(ll)) + /*<>*/ return /*<>*/ create + (ll, lv, ld, /*<>*/ create(lr, x, d, r)) /*<>*/ ; + /*<>*/ if(! lr) + /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; var - lrr = /*<>*/ lr[4], + lrr = /*<>*/ lr[4], lrd = lr[3], lrv = lr[2], lrl = lr[1], - _j_ = /*<>*/ create(lrr, x, d, r); - /*<>*/ return /*<>*/ create - ( /*<>*/ create(ll, lv, ld, lrl), + _j_ = /*<>*/ create(lrr, x, d, r); + /*<>*/ return /*<>*/ create + ( /*<>*/ create(ll, lv, ld, lrl), lrv, lrd, - _j_) /*<>*/ ; + _j_) /*<>*/ ; } - /*<>*/ if((hl + 2 | 0) >= hr){ - /*<>*/ _j_ = hr <= hl ? hl + 1 | 0 : hr + 1 | 0; + /*<>*/ if((hl + 2 | 0) >= hr){ + /*<>*/ _j_ = hr <= hl ? hl + 1 | 0 : hr + 1 | 0; return [0, l, x, d, r, _j_]; } - /*<>*/ if(! r) - /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; + /*<>*/ if(! r) + /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; var - rr = /*<>*/ r[4], + rr = /*<>*/ r[4], rd = r[3], rv = r[2], rl = r[1], - _k_ = /*<>*/ height(rl); - /*<>*/ if(_k_ <= height(rr)) - /*<>*/ return /*<>*/ create - ( /*<>*/ create(l, x, d, rl), rv, rd, rr) /*<>*/ ; - /*<>*/ if(! rl) - /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; + _k_ = /*<>*/ height(rl); + /*<>*/ if(_k_ <= height(rr)) + /*<>*/ return /*<>*/ create + ( /*<>*/ create(l, x, d, rl), rv, rd, rr) /*<>*/ ; + /*<>*/ if(! rl) + /*<>*/ return Stdlib[1].call(null, _j_) /*<>*/ ; var - rlr = /*<>*/ rl[4], + rlr = /*<>*/ rl[4], rld = rl[3], rlv = rl[2], rll = rl[1], - _j_ = /*<>*/ create(rlr, rv, rd, rr); - /*<>*/ return /*<>*/ create - ( /*<>*/ create(l, x, d, rll), rlv, rld, _j_) /*<>*/ ; + _j_ = /*<>*/ create(rlr, rv, rd, rr); + /*<>*/ return /*<>*/ create + ( /*<>*/ create(l, x, d, rll), rlv, rld, _j_) /*<>*/ ; } function is_empty(param){ - /*<>*/ return param ? 0 : 1 /*<>*/ ; + /*<>*/ return param ? 0 : 1 /*<>*/ ; } + function is_singleton(param){ + /*<>*/ if(param && ! param[1] && ! param[4]) + /*<>*/ return 1; + /*<>*/ return 0; + /*<>*/ } function add(x, data, m){ - /*<>*/ if(! m) - /*<>*/ return [0, 0, x, data, 0, 1]; + /*<>*/ if(! m) + /*<>*/ return [0, 0, x, data, 0, 1]; var - h = /*<>*/ m[5], + h = /*<>*/ m[5], r = m[4], d = m[3], v = m[2], l = m[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) - /*<>*/ return d === data ? m : [0, l, x, data, r, h] /*<>*/ ; - /*<>*/ if(0 <= c){ - var rr = /*<>*/ add(x, data, r); - /*<>*/ return r === rr + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) + /*<>*/ return d === data ? m : [0, l, x, data, r, h] /*<>*/ ; + /*<>*/ if(0 <= c){ + var rr = /*<>*/ add(x, data, r); + /*<>*/ return r === rr ? m - : /*<>*/ bal(l, v, d, rr) /*<>*/ ; + : /*<>*/ bal(l, v, d, rr) /*<>*/ ; } - var ll = /*<>*/ add(x, data, l); - /*<>*/ return l === ll + var ll = /*<>*/ add(x, data, l); + /*<>*/ return l === ll ? m - : /*<>*/ bal(ll, v, d, r) /*<>*/ ; + : /*<>*/ bal(ll, v, d, r) /*<>*/ ; } function find(x, _j_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _j_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d = _j_[3], v = _j_[2], l = _j_[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) /*<>*/ return d; - /*<>*/ _j_ = 0 <= c ? r : l; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) /*<>*/ return d; + /*<>*/ _j_ = 0 <= c ? r : l; } - /*<>*/ } + /*<>*/ } function find_first(f, _j_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _j_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - r$0 = /*<>*/ _j_[4], + r$0 = /*<>*/ _j_[4], d0$1 = _j_[3], v0$1 = _j_[2], l$0 = _j_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = l$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = l$0; break; } _j_ = r$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _j_) - /*<>*/ return [0, v0, d0]; + /*<>*/ for(;;){ + /*<>*/ if(! _j_) + /*<>*/ return [0, v0, d0]; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d0$0 = _j_[3], v0$0 = _j_[2], l = _j_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; d0 = d0$0; _j_ = l; } else _j_ = r; } - /*<>*/ } + /*<>*/ } function find_first_opt(f, _j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; var - r$0 = /*<>*/ _j_[4], + r$0 = /*<>*/ _j_[4], d0$1 = _j_[3], v0$1 = _j_[2], l$0 = _j_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = l$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = l$0; break; } _j_ = r$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _j_) - /*<>*/ return [0, [0, v0, d0]]; + /*<>*/ for(;;){ + /*<>*/ if(! _j_) + /*<>*/ return [0, [0, v0, d0]]; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d0$0 = _j_[3], v0$0 = _j_[2], l = _j_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; d0 = d0$0; _j_ = l; } else _j_ = r; } - /*<>*/ } + /*<>*/ } function find_last(f, _j_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _j_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - r$0 = /*<>*/ _j_[4], + r$0 = /*<>*/ _j_[4], d0$1 = _j_[3], v0$1 = _j_[2], l$0 = _j_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = r$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = r$0; break; } _j_ = l$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _j_) - /*<>*/ return [0, v0, d0]; + /*<>*/ for(;;){ + /*<>*/ if(! _j_) + /*<>*/ return [0, v0, d0]; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d0$0 = _j_[3], v0$0 = _j_[2], l = _j_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; d0 = d0$0; _j_ = r; } else _j_ = l; } - /*<>*/ } + /*<>*/ } function find_last_opt(f, _j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; var - r$0 = /*<>*/ _j_[4], + r$0 = /*<>*/ _j_[4], d0$1 = _j_[3], v0$1 = _j_[2], l$0 = _j_[1]; - /*<>*/ if(caml_call1(f, v0$1)){ - var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = r$0; + /*<>*/ if(caml_call1(f, v0$1)){ + var v0 = /*<>*/ v0$1, d0 = d0$1, _j_ = r$0; break; } _j_ = l$0; } - /*<>*/ for(;;){ - /*<>*/ if(! _j_) - /*<>*/ return [0, [0, v0, d0]]; + /*<>*/ for(;;){ + /*<>*/ if(! _j_) + /*<>*/ return [0, [0, v0, d0]]; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d0$0 = _j_[3], v0$0 = _j_[2], l = _j_[1]; - /*<>*/ if(caml_call1(f, v0$0)){ - /*<>*/ v0 = v0$0; + /*<>*/ if(caml_call1(f, v0$0)){ + /*<>*/ v0 = v0$0; d0 = d0$0; _j_ = r; } else _j_ = l; } - /*<>*/ } + /*<>*/ } function find_opt(x, _j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d = _j_[3], v = _j_[2], l = _j_[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) - /*<>*/ return [0, d]; - /*<>*/ _j_ = 0 <= c ? r : l; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) + /*<>*/ return [0, d]; + /*<>*/ _j_ = 0 <= c ? r : l; } - /*<>*/ } + /*<>*/ } function mem(x, _j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], v = _j_[2], l = _j_[1], - c = /*<>*/ caml_call2(Ord[1], x, v), - _j_ = /*<>*/ 0 === c ? 1 : 0; + c = /*<>*/ caml_call2(Ord[1], x, v), + _j_ = /*<>*/ 0 === c ? 1 : 0; if(_j_) return _j_; _j_ = 0 <= c ? r : l; } - /*<>*/ } + /*<>*/ } function min_binding(_j_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _j_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - var l = /*<>*/ _j_[1]; + var l = /*<>*/ _j_[1]; if(! l){ var d = _j_[3], v = _j_[2]; - /*<>*/ return [0, v, d]; + /*<>*/ return [0, v, d]; } - /*<>*/ _j_ = l; + /*<>*/ _j_ = l; } - /*<>*/ } + /*<>*/ } function min_binding_opt(_j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; - var l = /*<>*/ _j_[1]; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; + var l = /*<>*/ _j_[1]; if(! l){ var d = _j_[3], v = _j_[2]; - /*<>*/ return [0, [0, v, d]]; + /*<>*/ return [0, [0, v, d]]; } - /*<>*/ _j_ = l; + /*<>*/ _j_ = l; } - /*<>*/ } + /*<>*/ } function max_binding(_j_){ - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(! _j_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - /*<>*/ if(! _j_[4]){ + /*<>*/ if(! _j_[4]){ var d = _j_[3], v = _j_[2]; - /*<>*/ return [0, v, d]; + /*<>*/ return [0, v, d]; } - var r = /*<>*/ _j_[4]; - /*<>*/ _j_ = r; + var r = /*<>*/ _j_[4]; + /*<>*/ _j_ = r; } - /*<>*/ } + /*<>*/ } function max_binding_opt(_j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; - /*<>*/ if(! _j_[4]){ + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; + /*<>*/ if(! _j_[4]){ var d = _j_[3], v = _j_[2]; - /*<>*/ return [0, [0, v, d]]; + /*<>*/ return [0, [0, v, d]]; } - var r = /*<>*/ _j_[4]; - /*<>*/ _j_ = r; + var r = /*<>*/ _j_[4]; + /*<>*/ _j_ = r; } - /*<>*/ } + /*<>*/ } function remove_min_binding(param){ - /*<>*/ if(! param) - /*<>*/ return Stdlib[1].call - (null, "Map.remove_min_elt") /*<>*/ ; - var l = /*<>*/ param[1]; + /*<>*/ if(! param) + /*<>*/ return Stdlib[1].call + (null, "Map.remove_min_elt") /*<>*/ ; + var l = /*<>*/ param[1]; if(l){ var r = param[4], d = param[3], v = param[2]; - /*<>*/ return /*<>*/ bal - ( /*<>*/ remove_min_binding(l), v, d, r) /*<>*/ ; + /*<>*/ return /*<>*/ bal + ( /*<>*/ remove_min_binding(l), v, d, r) /*<>*/ ; } - var r$0 = /*<>*/ param[4]; - /*<>*/ return r$0; - /*<>*/ } + var r$0 = /*<>*/ param[4]; + /*<>*/ return r$0; + /*<>*/ } function _d_(t1, t2){ - /*<>*/ if(! t1) /*<>*/ return t2; - /*<>*/ if(! t2) /*<>*/ return t1; + /*<>*/ if(! t1) /*<>*/ return t2; + /*<>*/ if(! t2) /*<>*/ return t1; var - match = /*<>*/ min_binding(t2), - d = /*<>*/ match[2], + match = /*<>*/ min_binding(t2), + d = /*<>*/ match[2], x = match[1]; - /*<>*/ return /*<>*/ bal - (t1, x, d, /*<>*/ remove_min_binding(t2)) /*<>*/ ; + /*<>*/ return /*<>*/ bal + (t1, x, d, /*<>*/ remove_min_binding(t2)) /*<>*/ ; } function remove(x, m){ - /*<>*/ if(! m) /*<>*/ return 0; + /*<>*/ if(! m) /*<>*/ return 0; var - r = /*<>*/ m[4], + r = /*<>*/ m[4], d = m[3], v = m[2], l = m[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) - /*<>*/ return _d_(l, r) /*<>*/ ; - /*<>*/ if(0 <= c){ - var rr = /*<>*/ remove(x, r); - /*<>*/ return r === rr + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) + /*<>*/ return _d_(l, r) /*<>*/ ; + /*<>*/ if(0 <= c){ + var rr = /*<>*/ remove(x, r); + /*<>*/ return r === rr ? m - : /*<>*/ bal(l, v, d, rr) /*<>*/ ; + : /*<>*/ bal(l, v, d, rr) /*<>*/ ; } - var ll = /*<>*/ remove(x, l); - /*<>*/ return l === ll + var ll = /*<>*/ remove(x, l); + /*<>*/ return l === ll ? m - : /*<>*/ bal(ll, v, d, r) /*<>*/ ; + : /*<>*/ bal(ll, v, d, r) /*<>*/ ; } function update(x, f, m){ - /*<>*/ if(! m){ - var _j_ = /*<>*/ caml_call1(f, 0); - /*<>*/ if(! _j_) /*<>*/ return 0; - var data$0 = /*<>*/ _j_[1]; - /*<>*/ return [0, 0, x, data$0, 0, 1]; + /*<>*/ if(! m){ + var _j_ = /*<>*/ caml_call1(f, 0); + /*<>*/ if(! _j_) /*<>*/ return 0; + var data$0 = /*<>*/ _j_[1]; + /*<>*/ return [0, 0, x, data$0, 0, 1]; } var - h = /*<>*/ m[5], + h = /*<>*/ m[5], r = m[4], d = m[3], v = m[2], l = m[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c){ - /*<>*/ _j_ = caml_call1(f, [0, d]); - /*<>*/ if(! _j_) - /*<>*/ return _d_(l, r) /*<>*/ ; - var data = /*<>*/ _j_[1]; - /*<>*/ return d === data ? m : [0, l, x, data, r, h] /*<>*/ ; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c){ + /*<>*/ _j_ = caml_call1(f, [0, d]); + /*<>*/ if(! _j_) + /*<>*/ return _d_(l, r) /*<>*/ ; + var data = /*<>*/ _j_[1]; + /*<>*/ return d === data ? m : [0, l, x, data, r, h] /*<>*/ ; } - /*<>*/ if(0 <= c){ - var rr = /*<>*/ update(x, f, r); - /*<>*/ return r === rr + /*<>*/ if(0 <= c){ + var rr = /*<>*/ update(x, f, r); + /*<>*/ return r === rr ? m - : /*<>*/ bal(l, v, d, rr) /*<>*/ ; + : /*<>*/ bal(l, v, d, rr) /*<>*/ ; } - var ll = /*<>*/ update(x, f, l); - /*<>*/ return l === ll + var ll = /*<>*/ update(x, f, l); + /*<>*/ return l === ll ? m - : /*<>*/ bal(ll, v, d, r) /*<>*/ ; + : /*<>*/ bal(ll, v, d, r) /*<>*/ ; } function add_to_list(x, data, m){ function add(param){ - /*<>*/ if(! param) - /*<>*/ return [0, [0, data, 0]]; - var l = /*<>*/ param[1]; - /*<>*/ return [0, [0, data, l]]; - /*<>*/ } - /*<>*/ return update(x, add, m) /*<>*/ ; + /*<>*/ if(! param) + /*<>*/ return [0, [0, data, 0]]; + var l = /*<>*/ param[1]; + /*<>*/ return [0, [0, data, l]]; + /*<>*/ } + /*<>*/ return update(x, add, m) /*<>*/ ; } function iter(f, _j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d = _j_[3], v = _j_[2], l = _j_[1]; - /*<>*/ iter(f, l); - /*<>*/ caml_call2(f, v, d); - /*<>*/ _j_ = r; + /*<>*/ iter(f, l); + /*<>*/ caml_call2(f, v, d); + /*<>*/ _j_ = r; } - /*<>*/ } + /*<>*/ } function map(f, param){ - /*<>*/ if(! param) /*<>*/ return 0; + /*<>*/ if(! param) /*<>*/ return 0; var - h = /*<>*/ param[5], + h = /*<>*/ param[5], r = param[4], d = param[3], v = param[2], l = param[1], - l$0 = /*<>*/ map(f, l), - d$0 = /*<>*/ caml_call1(f, d), - r$0 = /*<>*/ map(f, r); - /*<>*/ return [0, l$0, v, d$0, r$0, h]; - /*<>*/ } + l$0 = /*<>*/ map(f, l), + d$0 = /*<>*/ caml_call1(f, d), + r$0 = /*<>*/ map(f, r); + /*<>*/ return [0, l$0, v, d$0, r$0, h]; + /*<>*/ } function mapi(f, param){ - /*<>*/ if(! param) /*<>*/ return 0; + /*<>*/ if(! param) /*<>*/ return 0; var - h = /*<>*/ param[5], + h = /*<>*/ param[5], r = param[4], d = param[3], v = param[2], l = param[1], - l$0 = /*<>*/ mapi(f, l), - d$0 = /*<>*/ caml_call2(f, v, d), - r$0 = /*<>*/ mapi(f, r); - /*<>*/ return [0, l$0, v, d$0, r$0, h]; - /*<>*/ } + l$0 = /*<>*/ mapi(f, l), + d$0 = /*<>*/ caml_call2(f, v, d), + r$0 = /*<>*/ mapi(f, r); + /*<>*/ return [0, l$0, v, d$0, r$0, h]; + /*<>*/ } function fold(f, m$0, accu$1){ - var m = /*<>*/ m$0, accu = accu$1; + var m = /*<>*/ m$0, accu = accu$1; for(;;){ - if(! m) /*<>*/ return accu; + if(! m) /*<>*/ return accu; var - r = /*<>*/ m[4], + r = /*<>*/ m[4], d = m[3], v = m[2], l = m[1], accu$0 = - /*<>*/ /*<>*/ caml_call3 - (f, v, d, /*<>*/ fold(f, l, accu)); - /*<>*/ m = r; + /*<>*/ /*<>*/ caml_call3 + (f, v, d, /*<>*/ fold(f, l, accu)); + /*<>*/ m = r; accu = accu$0; } } function for_all(p, _j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 1; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 1; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d = _j_[3], v = _j_[2], l = _j_[1], - _j_ = /*<>*/ caml_call2(p, v, d); - /*<>*/ if(_j_){ - /*<>*/ _j_ = for_all(p, l); - /*<>*/ if(_j_){_j_ = r; continue;} + _j_ = /*<>*/ caml_call2(p, v, d); + /*<>*/ if(_j_){ + /*<>*/ _j_ = for_all(p, l); + /*<>*/ if(_j_){_j_ = r; continue;} } - /*<>*/ return _j_; + /*<>*/ return _j_; } - /*<>*/ } + /*<>*/ } function exists(p, _j_){ - /*<>*/ for(;;){ - if(! _j_) /*<>*/ return 0; + /*<>*/ for(;;){ + if(! _j_) /*<>*/ return 0; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d = _j_[3], v = _j_[2], l = _j_[1], - _j_ = /*<>*/ caml_call2(p, v, d); - /*<>*/ if(_j_) + _j_ = /*<>*/ caml_call2(p, v, d); + /*<>*/ if(_j_) ; else{ - /*<>*/ _j_ = exists(p, l); - /*<>*/ if(! _j_){_j_ = r; continue;} + /*<>*/ _j_ = exists(p, l); + /*<>*/ if(! _j_){_j_ = r; continue;} } - /*<>*/ return _j_; + /*<>*/ return _j_; } - /*<>*/ } + /*<>*/ } function add_min_binding(k, x, param){ - /*<>*/ if(! param) - /*<>*/ return singleton(k, x) /*<>*/ ; + /*<>*/ if(! param) + /*<>*/ return singleton(k, x) /*<>*/ ; var - r = /*<>*/ param[4], + r = /*<>*/ param[4], d = param[3], v = param[2], l = param[1]; - /*<>*/ return /*<>*/ bal - ( /*<>*/ add_min_binding(k, x, l), v, d, r) /*<>*/ ; + /*<>*/ return /*<>*/ bal + ( /*<>*/ add_min_binding(k, x, l), v, d, r) /*<>*/ ; } function add_max_binding(k, x, param){ - /*<>*/ if(! param) - /*<>*/ return singleton(k, x) /*<>*/ ; + /*<>*/ if(! param) + /*<>*/ return singleton(k, x) /*<>*/ ; var - r = /*<>*/ param[4], + r = /*<>*/ param[4], d = param[3], v = param[2], l = param[1]; - /*<>*/ return /*<>*/ bal - (l, v, d, /*<>*/ add_max_binding(k, x, r)) /*<>*/ ; + /*<>*/ return /*<>*/ bal + (l, v, d, /*<>*/ add_max_binding(k, x, r)) /*<>*/ ; } function join(l, v, d, r){ - /*<>*/ if(! l) - /*<>*/ return add_min_binding(v, d, r) /*<>*/ ; - /*<>*/ if(! r) - /*<>*/ return add_max_binding(v, d, l) /*<>*/ ; + /*<>*/ if(! l) + /*<>*/ return add_min_binding(v, d, r) /*<>*/ ; + /*<>*/ if(! r) + /*<>*/ return add_max_binding(v, d, l) /*<>*/ ; var - rh = /*<>*/ r[5], + rh = /*<>*/ r[5], rr = r[4], rd = r[3], rv = r[2], @@ -12774,87 +14391,87 @@ ld = l[3], lv = l[2], ll = l[1]; - /*<>*/ return (rh + 2 | 0) < lh - ? /*<>*/ bal - (ll, lv, ld, /*<>*/ join(lr, v, d, r)) + /*<>*/ return (rh + 2 | 0) < lh + ? /*<>*/ bal + (ll, lv, ld, /*<>*/ join(lr, v, d, r)) : (lh + 2 | 0) < rh - ? /*<>*/ bal - ( /*<>*/ join(l, v, d, rl), rv, rd, rr) - : /*<>*/ create(l, v, d, r) /*<>*/ ; + ? /*<>*/ bal + ( /*<>*/ join(l, v, d, rl), rv, rd, rr) + : /*<>*/ create(l, v, d, r) /*<>*/ ; } function concat(t1, t2){ - /*<>*/ if(! t1) /*<>*/ return t2; - /*<>*/ if(! t2) /*<>*/ return t1; + /*<>*/ if(! t1) /*<>*/ return t2; + /*<>*/ if(! t2) /*<>*/ return t1; var - match = /*<>*/ min_binding(t2), - d = /*<>*/ match[2], + match = /*<>*/ min_binding(t2), + d = /*<>*/ match[2], x = match[1]; - /*<>*/ return /*<>*/ join - (t1, x, d, /*<>*/ remove_min_binding(t2)) /*<>*/ ; + /*<>*/ return /*<>*/ join + (t1, x, d, /*<>*/ remove_min_binding(t2)) /*<>*/ ; } function concat_or_join(t1, v, d, t2){ - /*<>*/ if(! d) - /*<>*/ return concat(t1, t2) /*<>*/ ; - var d$0 = /*<>*/ d[1]; - /*<>*/ return join(t1, v, d$0, t2) /*<>*/ ; + /*<>*/ if(! d) + /*<>*/ return concat(t1, t2) /*<>*/ ; + var d$0 = /*<>*/ d[1]; + /*<>*/ return join(t1, v, d$0, t2) /*<>*/ ; } function split(x, _j_){ - /*<>*/ if(! _j_) /*<>*/ return _a_; + /*<>*/ if(! _j_) /*<>*/ return _a_; var - r = /*<>*/ _j_[4], + r = /*<>*/ _j_[4], d = _j_[3], v = _j_[2], l = _j_[1], - c = /*<>*/ caml_call2(Ord[1], x, v); - /*<>*/ if(0 === c) - /*<>*/ return [0, l, [0, d], r]; - /*<>*/ if(0 <= c){ - /*<>*/ _j_ = split(x, r); - var rr = /*<>*/ _j_[3], pres = _j_[2], lr = _j_[1]; - /*<>*/ return [0, join(l, v, d, lr), pres, rr] /*<>*/ ; + c = /*<>*/ caml_call2(Ord[1], x, v); + /*<>*/ if(0 === c) + /*<>*/ return [0, l, [0, d], r]; + /*<>*/ if(0 <= c){ + /*<>*/ _j_ = split(x, r); + var rr = /*<>*/ _j_[3], pres = _j_[2], lr = _j_[1]; + /*<>*/ return [0, join(l, v, d, lr), pres, rr] /*<>*/ ; } - /*<>*/ _j_ = split(x, l); - var rl = /*<>*/ _j_[3], pres$0 = _j_[2], ll = _j_[1]; - /*<>*/ return [0, ll, pres$0, join(rl, v, d, r)] /*<>*/ ; - /*<>*/ } + /*<>*/ _j_ = split(x, l); + var rl = /*<>*/ _j_[3], pres$0 = _j_[2], ll = _j_[1]; + /*<>*/ return [0, ll, pres$0, join(rl, v, d, r)] /*<>*/ ; + /*<>*/ } function merge(f, s1, s2){ - /*<>*/ if(s1){ + /*<>*/ if(s1){ var h1 = s1[5], r1 = s1[4], d1 = s1[3], v1 = s1[2], l1 = s1[1]; - /*<>*/ if(height(s2) <= h1){ + /*<>*/ if(height(s2) <= h1){ var - _i_ = /*<>*/ split(v1, s2), - r2 = /*<>*/ _i_[3], + _i_ = /*<>*/ split(v1, s2), + r2 = /*<>*/ _i_[3], d2 = _i_[2], l2 = _i_[1], - _i_ = /*<>*/ merge(f, r1, r2), - _j_ = /*<>*/ caml_call3(f, v1, [0, d1], d2); - /*<>*/ return /*<>*/ concat_or_join - ( /*<>*/ merge(f, l1, l2), v1, _j_, _i_) /*<>*/ ; + _i_ = /*<>*/ merge(f, r1, r2), + _j_ = /*<>*/ caml_call3(f, v1, [0, d1], d2); + /*<>*/ return /*<>*/ concat_or_join + ( /*<>*/ merge(f, l1, l2), v1, _j_, _i_) /*<>*/ ; } } - else if(! s2) /*<>*/ return 0; - /*<>*/ if(! s2) - /*<>*/ throw caml_maybe_attach_backtrace + else if(! s2) /*<>*/ return 0; + /*<>*/ if(! s2) + /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _b_], 1); var - r2$0 = /*<>*/ s2[4], + r2$0 = /*<>*/ s2[4], d2$0 = s2[3], v2 = s2[2], l2$0 = s2[1], - _i_ = /*<>*/ split(v2, s1), - r1$0 = /*<>*/ _i_[3], + _i_ = /*<>*/ split(v2, s1), + r1$0 = /*<>*/ _i_[3], d1$0 = _i_[2], l1$0 = _i_[1], - _i_ = /*<>*/ merge(f, r1$0, r2$0), - _j_ = /*<>*/ caml_call3(f, v2, d1$0, [0, d2$0]); - /*<>*/ return /*<>*/ concat_or_join - ( /*<>*/ merge(f, l1$0, l2$0), v2, _j_, _i_) /*<>*/ ; + _i_ = /*<>*/ merge(f, r1$0, r2$0), + _j_ = /*<>*/ caml_call3(f, v2, d1$0, [0, d2$0]); + /*<>*/ return /*<>*/ concat_or_join + ( /*<>*/ merge(f, l1$0, l2$0), v2, _j_, _i_) /*<>*/ ; } function union(f, s1, s2){ - /*<>*/ if(s1){ + /*<>*/ if(s1){ if(s2){ var h2 = s2[5], @@ -12867,123 +14484,123 @@ d1 = s1[3], v1 = s1[2], l1 = s1[1]; - /*<>*/ if(h2 <= h1){ + /*<>*/ if(h2 <= h1){ var - _i_ = /*<>*/ split(v1, s2), - r2$0 = /*<>*/ _i_[3], + _i_ = /*<>*/ split(v1, s2), + r2$0 = /*<>*/ _i_[3], d2$0 = _i_[2], l2$0 = _i_[1], - l = /*<>*/ union(f, l1, l2$0), - r = /*<>*/ union(f, r1, r2$0); - /*<>*/ if(! d2$0) - /*<>*/ return join(l, v1, d1, r) /*<>*/ ; - var d2$1 = /*<>*/ d2$0[1]; - /*<>*/ return /*<>*/ concat_or_join + l = /*<>*/ union(f, l1, l2$0), + r = /*<>*/ union(f, r1, r2$0); + /*<>*/ if(! d2$0) + /*<>*/ return join(l, v1, d1, r) /*<>*/ ; + var d2$1 = /*<>*/ d2$0[1]; + /*<>*/ return /*<>*/ concat_or_join (l, v1, - /*<>*/ caml_call3(f, v1, d1, d2$1), - r) /*<>*/ ; + /*<>*/ caml_call3(f, v1, d1, d2$1), + r) /*<>*/ ; } - /*<>*/ _i_ = split(v2, s1); + /*<>*/ _i_ = split(v2, s1); var - r1$0 = /*<>*/ _i_[3], + r1$0 = /*<>*/ _i_[3], d1$0 = _i_[2], l1$0 = _i_[1], - l$0 = /*<>*/ union(f, l1$0, l2), - r$0 = /*<>*/ union(f, r1$0, r2); - /*<>*/ if(! d1$0) - /*<>*/ return join(l$0, v2, d2, r$0) /*<>*/ ; - var d1$1 = /*<>*/ d1$0[1]; - /*<>*/ return /*<>*/ concat_or_join + l$0 = /*<>*/ union(f, l1$0, l2), + r$0 = /*<>*/ union(f, r1$0, r2); + /*<>*/ if(! d1$0) + /*<>*/ return join(l$0, v2, d2, r$0) /*<>*/ ; + var d1$1 = /*<>*/ d1$0[1]; + /*<>*/ return /*<>*/ concat_or_join (l$0, v2, - /*<>*/ caml_call3(f, v2, d1$1, d2), - r$0) /*<>*/ ; + /*<>*/ caml_call3(f, v2, d1$1, d2), + r$0) /*<>*/ ; } - var s = /*<>*/ s1; + var s = /*<>*/ s1; } else s = s2; - /*<>*/ return s; - /*<>*/ } + /*<>*/ return s; + /*<>*/ } function filter(p, m){ - /*<>*/ if(! m) /*<>*/ return 0; + /*<>*/ if(! m) /*<>*/ return 0; var - r = /*<>*/ m[4], + r = /*<>*/ m[4], d = m[3], v = m[2], l = m[1], - l$0 = /*<>*/ filter(p, l), - pvd = /*<>*/ caml_call2(p, v, d), - r$0 = /*<>*/ filter(p, r); - /*<>*/ if(! pvd) - /*<>*/ return concat(l$0, r$0) /*<>*/ ; - /*<>*/ if(l === l$0 && r === r$0) - /*<>*/ return m; - /*<>*/ return join(l$0, v, d, r$0) /*<>*/ ; + l$0 = /*<>*/ filter(p, l), + pvd = /*<>*/ caml_call2(p, v, d), + r$0 = /*<>*/ filter(p, r); + /*<>*/ if(! pvd) + /*<>*/ return concat(l$0, r$0) /*<>*/ ; + /*<>*/ if(l === l$0 && r === r$0) + /*<>*/ return m; + /*<>*/ return join(l$0, v, d, r$0) /*<>*/ ; } function filter_map(f, param){ - /*<>*/ if(! param) /*<>*/ return 0; + /*<>*/ if(! param) /*<>*/ return 0; var - r = /*<>*/ param[4], + r = /*<>*/ param[4], d = param[3], v = param[2], l = param[1], - l$0 = /*<>*/ filter_map(f, l), - fvd = /*<>*/ caml_call2(f, v, d), - r$0 = /*<>*/ filter_map(f, r); - /*<>*/ if(! fvd) - /*<>*/ return concat(l$0, r$0) /*<>*/ ; - var d$0 = /*<>*/ fvd[1]; - /*<>*/ return join(l$0, v, d$0, r$0) /*<>*/ ; + l$0 = /*<>*/ filter_map(f, l), + fvd = /*<>*/ caml_call2(f, v, d), + r$0 = /*<>*/ filter_map(f, r); + /*<>*/ if(! fvd) + /*<>*/ return concat(l$0, r$0) /*<>*/ ; + var d$0 = /*<>*/ fvd[1]; + /*<>*/ return join(l$0, v, d$0, r$0) /*<>*/ ; } function partition(p, _i_){ - /*<>*/ if(! _i_) /*<>*/ return _c_; + /*<>*/ if(! _i_) /*<>*/ return _c_; var - r = /*<>*/ _i_[4], + r = /*<>*/ _i_[4], d = _i_[3], v = _i_[2], l = _i_[1], - _i_ = /*<>*/ partition(p, l), - lf = /*<>*/ _i_[2], + _i_ = /*<>*/ partition(p, l), + lf = /*<>*/ _i_[2], lt = _i_[1], - pvd = /*<>*/ caml_call2(p, v, d), - _i_ = /*<>*/ partition(p, r), - rf = /*<>*/ _i_[2], + pvd = /*<>*/ caml_call2(p, v, d), + _i_ = /*<>*/ partition(p, r), + rf = /*<>*/ _i_[2], rt = _i_[1]; - /*<>*/ if(pvd){ - /*<>*/ _i_ = concat(lf, rf); - /*<>*/ return [0, join(lt, v, d, rt), _i_] /*<>*/ ; + /*<>*/ if(pvd){ + /*<>*/ _i_ = concat(lf, rf); + /*<>*/ return [0, join(lt, v, d, rt), _i_] /*<>*/ ; } - /*<>*/ _i_ = join(lf, v, d, rf); - /*<>*/ return [0, concat(lt, rt), _i_] /*<>*/ ; - /*<>*/ } + /*<>*/ _i_ = join(lf, v, d, rf); + /*<>*/ return [0, concat(lt, rt), _i_] /*<>*/ ; + /*<>*/ } function cons_enum(m$0, e$1){ - var m = /*<>*/ m$0, e = e$1; + var m = /*<>*/ m$0, e = e$1; for(;;){ - if(! m) /*<>*/ return e; + if(! m) /*<>*/ return e; var - r = /*<>*/ m[4], + r = /*<>*/ m[4], d = m[3], v = m[2], l = m[1], - e$0 = /*<>*/ [0, v, d, r, e]; + e$0 = /*<>*/ [0, v, d, r, e]; m = l; e = e$0; } - /*<>*/ } + /*<>*/ } function compare(cmp, m1, m2){ var - e2$2 = /*<>*/ cons_enum(m2, 0), - e1$2 = /*<>*/ cons_enum(m1, 0), - e1 = /*<>*/ e1$2, + e2$2 = /*<>*/ cons_enum(m2, 0), + e1$2 = /*<>*/ cons_enum(m1, 0), + e1 = /*<>*/ e1$2, e2 = e2$2; for(;;){ - /*<>*/ if(! e1) - return e2 ? -1 : 0 /*<>*/ ; - /*<>*/ if(! e2) /*<>*/ return 1; + /*<>*/ if(! e1) + return e2 ? -1 : 0 /*<>*/ ; + /*<>*/ if(! e2) /*<>*/ return 1; var - e2$0 = /*<>*/ e2[4], + e2$0 = /*<>*/ e2[4], r2 = e2[3], d2 = e2[2], v2 = e2[1], @@ -12991,30 +14608,30 @@ r1 = e1[3], d1 = e1[2], v1 = e1[1], - c = /*<>*/ caml_call2(Ord[1], v1, v2); - /*<>*/ if(0 !== c) /*<>*/ return c; - var c$0 = /*<>*/ caml_call2(cmp, d1, d2); - /*<>*/ if(0 !== c$0) - /*<>*/ return c$0; + c = /*<>*/ caml_call2(Ord[1], v1, v2); + /*<>*/ if(0 !== c) /*<>*/ return c; + var c$0 = /*<>*/ caml_call2(cmp, d1, d2); + /*<>*/ if(0 !== c$0) + /*<>*/ return c$0; var - e2$1 = /*<>*/ cons_enum(r2, e2$0), - e1$1 = /*<>*/ cons_enum(r1, e1$0); - /*<>*/ e1 = e1$1; + e2$1 = /*<>*/ cons_enum(r2, e2$0), + e1$1 = /*<>*/ cons_enum(r1, e1$0); + /*<>*/ e1 = e1$1; e2 = e2$1; } - /*<>*/ } + /*<>*/ } function equal(cmp, m1, m2){ var - e2$2 = /*<>*/ cons_enum(m2, 0), - e1$2 = /*<>*/ cons_enum(m1, 0), - e1 = /*<>*/ e1$2, + e2$2 = /*<>*/ cons_enum(m2, 0), + e1$2 = /*<>*/ cons_enum(m1, 0), + e1 = /*<>*/ e1$2, e2 = e2$2; for(;;){ - /*<>*/ if(! e1) - return e2 ? 0 : 1 /*<>*/ ; - /*<>*/ if(! e2) /*<>*/ return 0; + /*<>*/ if(! e1) + return e2 ? 0 : 1 /*<>*/ ; + /*<>*/ if(! e2) /*<>*/ return 0; var - e2$0 = /*<>*/ e2[4], + e2$0 = /*<>*/ e2[4], r2 = e2[3], d2 = e2[2], v2 = e2[1], @@ -13023,147 +14640,147 @@ d1 = e1[2], v1 = e1[1], _i_ = - /*<>*/ 0 === caml_call2(Ord[1], v1, v2) ? 1 : 0; - /*<>*/ if(_i_){ - /*<>*/ _i_ = caml_call2(cmp, d1, d2); - /*<>*/ if(_i_){ + /*<>*/ 0 === caml_call2(Ord[1], v1, v2) ? 1 : 0; + /*<>*/ if(_i_){ + /*<>*/ _i_ = caml_call2(cmp, d1, d2); + /*<>*/ if(_i_){ var - e2$1 = /*<>*/ cons_enum(r2, e2$0), - e1$1 = /*<>*/ cons_enum(r1, e1$0); - /*<>*/ e1 = e1$1; + e2$1 = /*<>*/ cons_enum(r2, e2$0), + e1$1 = /*<>*/ cons_enum(r1, e1$0); + /*<>*/ e1 = e1$1; e2 = e2$1; continue; } } - /*<>*/ return _i_; + /*<>*/ return _i_; } - /*<>*/ } + /*<>*/ } function cardinal(_i_){ - /*<>*/ if(! _i_) /*<>*/ return 0; + /*<>*/ if(! _i_) /*<>*/ return 0; var - r = /*<>*/ _i_[4], + r = /*<>*/ _i_[4], l = _i_[1], - _i_ = /*<>*/ cardinal(r); - /*<>*/ return (cardinal(l) + 1 | 0) + _i_ | 0 /*<>*/ ; - /*<>*/ } + _i_ = /*<>*/ cardinal(r); + /*<>*/ return (cardinal(l) + 1 | 0) + _i_ | 0 /*<>*/ ; + /*<>*/ } function bindings_aux(accu$1, _i_){ - var accu = /*<>*/ accu$1; + var accu = /*<>*/ accu$1; for(;;){ - if(! _i_) /*<>*/ return accu; + if(! _i_) /*<>*/ return accu; var - r = /*<>*/ _i_[4], + r = /*<>*/ _i_[4], d = _i_[3], v = _i_[2], l = _i_[1], accu$0 = - /*<>*/ [0, [0, v, d], bindings_aux(accu, r)]; - /*<>*/ accu = accu$0; + /*<>*/ [0, [0, v, d], bindings_aux(accu, r)]; + /*<>*/ accu = accu$0; _i_ = l; } - /*<>*/ } + /*<>*/ } function bindings(s){ - /*<>*/ return bindings_aux(0, s) /*<>*/ ; + /*<>*/ return bindings_aux(0, s) /*<>*/ ; } var empty = /*<>*/ 0; function of_list(bs){ - /*<>*/ return Stdlib_List[27].call + /*<>*/ return Stdlib_List[28].call (null, function(m, param){ - var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return add(k, v, m) /*<>*/ ; + var v = /*<>*/ param[2], k = param[1]; + /*<>*/ return add(k, v, m) /*<>*/ ; }, empty, - bs) /*<>*/ ; + bs) /*<>*/ ; } function add_seq(i, m){ - /*<>*/ return Stdlib_Seq[5].call + /*<>*/ return Stdlib_Seq[5].call (null, function(m, param){ - var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return add(k, v, m) /*<>*/ ; + var v = /*<>*/ param[2], k = param[1]; + /*<>*/ return add(k, v, m) /*<>*/ ; }, m, - i) /*<>*/ ; + i) /*<>*/ ; } function of_seq(i){ - /*<>*/ return add_seq(i, empty) /*<>*/ ; + /*<>*/ return add_seq(i, empty) /*<>*/ ; } function seq_of_enum(c, param){ - /*<>*/ if(! c) /*<>*/ return 0; + /*<>*/ if(! c) /*<>*/ return 0; var - rest = /*<>*/ c[4], + rest = /*<>*/ c[4], t = c[3], v = c[2], k = c[1], - _h_ = /*<>*/ cons_enum(t, rest); - /*<>*/ return [0, + _h_ = /*<>*/ cons_enum(t, rest); + /*<>*/ return [0, [0, k, v], function(_i_){ - /*<>*/ return seq_of_enum(_h_, _i_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return seq_of_enum(_h_, _i_); + }] /*<>*/ ; + /*<>*/ } function to_seq(m){ - var _g_ = /*<>*/ cons_enum(m, 0); - /*<>*/ return function(_h_){ + var _g_ = /*<>*/ cons_enum(m, 0); + /*<>*/ return function(_h_){ return seq_of_enum(_g_, _h_);}; } function snoc_enum(s$0, e$1){ - var s = /*<>*/ s$0, e = e$1; + var s = /*<>*/ s$0, e = e$1; for(;;){ - if(! s) /*<>*/ return e; + if(! s) /*<>*/ return e; var - r = /*<>*/ s[4], + r = /*<>*/ s[4], d = s[3], v = s[2], l = s[1], - e$0 = /*<>*/ [0, v, d, l, e]; + e$0 = /*<>*/ [0, v, d, l, e]; s = r; e = e$0; } - /*<>*/ } + /*<>*/ } function rev_seq_of_enum(c, param){ - /*<>*/ if(! c) /*<>*/ return 0; + /*<>*/ if(! c) /*<>*/ return 0; var - rest = /*<>*/ c[4], + rest = /*<>*/ c[4], t = c[3], v = c[2], k = c[1], - _f_ = /*<>*/ snoc_enum(t, rest); - /*<>*/ return [0, + _f_ = /*<>*/ snoc_enum(t, rest); + /*<>*/ return [0, [0, k, v], function(_g_){ - /*<>*/ return rev_seq_of_enum(_f_, _g_); - }] /*<>*/ ; - /*<>*/ } + /*<>*/ return rev_seq_of_enum(_f_, _g_); + }] /*<>*/ ; + /*<>*/ } function to_rev_seq(c){ - var _e_ = /*<>*/ snoc_enum(c, 0); - /*<>*/ return function(_f_){ + var _e_ = /*<>*/ snoc_enum(c, 0); + /*<>*/ return function(_f_){ return rev_seq_of_enum(_e_, _f_);}; } function to_seq_from(low, m){ a: { - var m$0 = /*<>*/ m, c = 0; + var m$0 = /*<>*/ m, c = 0; for(;;){ - /*<>*/ if(! m$0){var _d_ = c; break a;} + /*<>*/ if(! m$0){var _d_ = c; break a;} var r = m$0[4], d = m$0[3], v = m$0[2], l = m$0[1], - n = /*<>*/ caml_call2(Ord[1], v, low); - /*<>*/ if(0 === n) break; - /*<>*/ if(0 <= n){ - var c$0 = /*<>*/ [0, v, d, r, c]; + n = /*<>*/ caml_call2(Ord[1], v, low); + /*<>*/ if(0 === n) break; + /*<>*/ if(0 <= n){ + var c$0 = /*<>*/ [0, v, d, r, c]; m$0 = l; c = c$0; } else - /*<>*/ m$0 = r; + /*<>*/ m$0 = r; } - /*<>*/ _d_ = [0, v, d, r, c]; + /*<>*/ _d_ = [0, v, d, r, c]; } - /*<>*/ return function(_e_){ + /*<>*/ return function(_e_){ return seq_of_enum(_d_, _e_);}; } /*<>*/ return [0, @@ -13198,6 +14815,7 @@ partition, split, is_empty, + is_singleton, mem, equal, compare, @@ -13294,10 +14912,10 @@ /*<>*/ return Stdlib_List[19].call(null, f, s[1]) /*<>*/ ; } function fold(f, acc, s){ - /*<>*/ return Stdlib_List[27].call(null, f, acc, s[1]) /*<>*/ ; + /*<>*/ return Stdlib_List[28].call(null, f, acc, s[1]) /*<>*/ ; } function to_seq(s){ - /*<>*/ return Stdlib_List[69].call(null, s[1]) /*<>*/ ; + /*<>*/ return Stdlib_List[71].call(null, s[1]) /*<>*/ ; } function add_seq(q, i){ /*<>*/ return Stdlib_Seq[4].call @@ -13591,7 +15209,7 @@ function create(n){ var n$0 = /*<>*/ 1 <= n ? n : 1, - n$1 = /*<>*/ Stdlib_Sys[13] < n$0 ? Stdlib_Sys[13] : n$0, + n$1 = /*<>*/ Stdlib_Sys[14] < n$0 ? Stdlib_Sys[14] : n$0, s = /*<>*/ caml_create_bytes(n$1); /*<>*/ return [0, [0, s, n$1], 0, s]; /*<>*/ } @@ -13657,12 +15275,12 @@ } var new_len$0 = - /*<>*/ Stdlib_Sys[13] < new_len + /*<>*/ Stdlib_Sys[14] < new_len ? (old_pos + more | 0) - <= Stdlib_Sys[13] - ? Stdlib_Sys[13] + <= Stdlib_Sys[14] + ? Stdlib_Sys[14] : ( /*<>*/ Stdlib [2].call (null, "Buffer.add: cannot grow buffer"), @@ -13800,7 +15418,7 @@ function add_channel(b, ic, to_read$1){ var _c_ = /*<>*/ to_read$1 < 0, - _c_ = _c_ || Stdlib_Sys[13] < to_read$1; + _c_ = _c_ || Stdlib_Sys[14] < to_read$1; if(_c_) /*<>*/ Stdlib[1].call(null, "Buffer.add_channel"); /*<>*/ if(b[1][2] < (b[2] + to_read$1 | 0)) @@ -13899,7 +15517,7 @@ var val = /*<>*/ [0, - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, s, start, stop$0 - start | 0), stop$0]; break a; @@ -13932,7 +15550,7 @@ /*<>*/ if(0 === k){ /*<>*/ val = [0, - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, s, new_start, (stop - start | 0) - 1 | 0), stop + 1 | 0]; break; @@ -14083,7 +15701,7 @@ function add_int16_le(b, x){ var _a_ = - /*<>*/ Stdlib_Sys[12] + /*<>*/ Stdlib_Sys[13] ? /*<>*/ caml_bswap16(x) : x; /*<>*/ return add_int16_ne(b, _a_) /*<>*/ ; @@ -14091,7 +15709,7 @@ function add_int16_be(b, x){ var x$0 = - /*<>*/ Stdlib_Sys[12] + /*<>*/ Stdlib_Sys[13] ? x : /*<>*/ caml_bswap16(x); /*<>*/ return add_int16_ne(b, x$0) /*<>*/ ; @@ -14099,7 +15717,7 @@ function add_int32_le(b, x){ var _a_ = - /*<>*/ Stdlib_Sys[12] + /*<>*/ Stdlib_Sys[13] ? /*<>*/ caml_int32_bswap(x) : x; /*<>*/ return add_int32_ne(b, _a_) /*<>*/ ; @@ -14107,7 +15725,7 @@ function add_int32_be(b, x){ var x$0 = - /*<>*/ Stdlib_Sys[12] + /*<>*/ Stdlib_Sys[13] ? x : /*<>*/ caml_int32_bswap(x); /*<>*/ return add_int32_ne(b, x$0) /*<>*/ ; @@ -14115,7 +15733,7 @@ function add_int64_le(b, x){ var _a_ = - /*<>*/ Stdlib_Sys[12] + /*<>*/ Stdlib_Sys[13] ? /*<>*/ caml_int64_bswap(x) : x; /*<>*/ return add_int64_ne(b, _a_) /*<>*/ ; @@ -14123,7 +15741,7 @@ function add_int64_be(b, x){ var x$0 = - /*<>*/ Stdlib_Sys[12] + /*<>*/ Stdlib_Sys[13] ? x : /*<>*/ caml_int64_bswap(x); /*<>*/ return add_int64_ne(b, x$0) /*<>*/ ; @@ -14286,316 +15904,53 @@ /*<>*/ 0 === s[2] ? 0 : (s[2] = s[2] - 1 | 0, 1); /*<>*/ Stdlib_Mutex[4].call(null, s[1]); /*<>*/ return ret; - /*<>*/ } - function get_value(s){ - /*<>*/ return s[2]; - /*<>*/ } - function make$0(b){ - var - _a_ = /*<>*/ Stdlib_Condition[1].call(null, 0), - _b_ = /*<>*/ b ? 1 : 0; - /*<>*/ return [0, - Stdlib_Mutex[1].call(null, 0), - _b_, - _a_] /*<>*/ ; - /*<>*/ } - function release$0(s){ - /*<>*/ Stdlib_Mutex[2].call(null, s[1]); - /*<>*/ s[2] = 1; - /*<>*/ Stdlib_Condition[3].call(null, s[3]); - /*<>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<>*/ ; - } - function acquire$0(s){ - /*<>*/ Stdlib_Mutex[2].call(null, s[1]); - /*<>*/ for(;;){ - if(0 !== s[2]){ - /*<>*/ s[2] = 0; - /*<>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<>*/ ; - } - /*<>*/ Stdlib_Condition[2].call(null, s[3], s[1]); - } - /*<>*/ } - function try_acquire$0(s){ - /*<>*/ Stdlib_Mutex[2].call(null, s[1]); - var ret = /*<>*/ 0 === s[2] ? 0 : (s[2] = 0, 1); - /*<>*/ Stdlib_Mutex[4].call(null, s[1]); - /*<>*/ return ret; - /*<>*/ } - /*<>*/ runtime.caml_register_global - ([0, - [0, make, release, acquire, try_acquire, get_value], - [0, make$0, release$0, acquire$0, try_acquire$0]], - "Stdlib__Semaphore"); - return; - } - (globalThis)); - -//# unitInfo: Provides: Stdlib__Domain -//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Condition, Stdlib__List, Stdlib__Mutex -//# shape: Stdlib__Domain:[F(1),F(1),F(1)*,F(1),F(1),F(1),F(1),F(1),F(1),F(1),N] -(function - (globalThis){ - "use strict"; - var - runtime = globalThis.jsoo_runtime, - caml_array_make = runtime.caml_array_make, - caml_check_bound = runtime.caml_check_bound, - caml_domain_dls_get = runtime.caml_domain_dls_get, - caml_get_global = runtime.caml_get_global, - caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, - caml_ml_domain_id = runtime.caml_ml_domain_id, - caml_wrap_exception = runtime.caml_wrap_exception; - function caml_call1(f, a0){ - return (f.l >= 0 ? f.l : f.l = f.length) === 1 - ? f(a0) - : runtime.caml_call_gen(f, [a0]); - } - var - dummy = 0, - Stdlib_Condition = caml_get_global("Stdlib__Condition"), - Stdlib_Mutex = caml_get_global("Stdlib__Mutex"), - Stdlib_Atomic = caml_get_global("Stdlib__Atomic"), - Stdlib = caml_get_global("Stdlib"), - Stdlib_Array = caml_get_global("Stdlib__Array"), - Stdlib_List = caml_get_global("Stdlib__List"), - Assert_failure = runtime.caml_get_global_predef("Assert_failure"); - function cpu_relax(param){ - /*<>*/ return runtime.caml_ml_domain_cpu_relax(0) /*<>*/ ; - } - var none = /*<>*/ [0, 0]; - function create_dls(param){ - var st = /*<>*/ caml_array_make(8, none); - /*<>*/ runtime.caml_domain_dls_set(st); - /*<>*/ } - /*<>*/ create_dls(0); - var - key_counter = /*<>*/ Stdlib_Atomic[1].call(null, 0), - parent_keys = /*<>*/ Stdlib_Atomic[1].call(null, 0); - function new_key(split_from_parent, init_orphan){ - var - idx = - /*<>*/ Stdlib_Atomic[7].call(null, key_counter, 1), - k = /*<>*/ [0, idx, init_orphan]; - /*<>*/ if(split_from_parent){ - var - split = split_from_parent[1], - ki = /*<>*/ [0, k, split]; - /*<>*/ for(;;){ - var - l = /*<>*/ Stdlib_Atomic[3].call(null, parent_keys); - /*<>*/ if - (! (1 - Stdlib_Atomic[6].call(null, parent_keys, l, [0, ki, l]))) - break; - } - } - /*<>*/ return k; - /*<>*/ } - function maybe_grow(idx){ - /*<>*/ for(;;){ - var - st = caml_domain_dls_get(0), - sz = /*<>*/ st.length - 1; - /*<>*/ if(idx < sz) - /*<>*/ return st; - var new_sz = /*<>*/ sz; - for(;;){ - /*<>*/ if(idx < new_sz){ - var new_st = /*<>*/ caml_array_make(new_sz, none); - /*<>*/ Stdlib_Array[9].call - (null, st, 0, new_st, 0, sz); - /*<>*/ if - (runtime.caml_domain_dls_compare_and_set(st, new_st)) - /*<>*/ return new_st; - break; - } - var s = /*<>*/ 2 * new_sz | 0; - new_sz = s; - } - } - /*<>*/ } - function set(param, x){ - var - idx = /*<>*/ param[1], - st = /*<>*/ maybe_grow(idx); - /*<>*/ caml_check_bound(st, idx)[idx + 1] = x; - /*<>*/ return 0; - } - var _a_ = /*<>*/ [0, "domain.ml", 184, 13]; - function get(_b_){ - var - init = /*<>*/ _b_[2], - idx = _b_[1], - st = /*<>*/ maybe_grow(idx), - oldval = /*<>*/ caml_check_bound(st, idx)[idx + 1]; - /*<>*/ if(oldval !== none) - /*<>*/ return oldval; - var - new_obj = /*<>*/ caml_call1(init, 0), - st$0 = /*<>*/ caml_domain_dls_get(0), - curval = /*<>*/ caml_check_bound(st$0, idx)[idx + 1], - _b_ = - /*<>*/ curval === oldval - ? (st$0[idx + 1] = new_obj, 1) - : 0; - /*<>*/ if(_b_) - /*<>*/ return new_obj; - var - updated_obj = - /*<>*/ caml_check_bound(st$0, idx)[idx + 1]; - /*<>*/ if(updated_obj !== none) - /*<>*/ return updated_obj; - /*<>*/ throw caml_maybe_attach_backtrace - ([0, Assert_failure, _a_], 1); - /*<>*/ } - function set_initial_keys(l){ - /*<>*/ return Stdlib_List[19].call - (null, - function(param){ - var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return set(k, v) /*<>*/ ; - }, - l) /*<>*/ ; - } - function get_id(param){ - var domain = /*<>*/ param[1]; - /*<>*/ return domain; - /*<>*/ } - function self(param){ - /*<>*/ return caml_ml_domain_id(0) /*<>*/ ; - } - function is_main_domain(param){ - /*<>*/ return 0 === caml_ml_domain_id(0) ? 1 : 0 /*<>*/ ; - /*<>*/ } - var - first_domain_spawned = - /*<>*/ Stdlib_Atomic[1].call(null, 0), - first_spawn_function = - /*<>*/ [0, - function(param){ /*<>*/ }]; - function before_first_spawn(f){ - /*<>*/ if - (Stdlib_Atomic[3].call(null, first_domain_spawned)) - /*<>*/ throw caml_maybe_attach_backtrace - ([0, Stdlib[6], "first domain already spawned"], 1); - var old_f = /*<>*/ first_spawn_function[1]; - function new_f(param){ - /*<>*/ caml_call1(old_f, 0); - /*<>*/ return caml_call1(f, 0) /*<>*/ ; - } - /*<>*/ first_spawn_function[1] = new_f; - return 0; - /*<>*/ } - var - at_exit_key = - /*<>*/ new_key - (0, - function(param){ - /*<>*/ return function(param){ - /*<>*/ return 0; /*<>*/ } /*<>*/ ; - /*<>*/ }); - function at_exit(f){ - var old_exit = /*<>*/ get(at_exit_key); - function new_exit(param){ - /*<>*/ caml_call1(f, 0); - /*<>*/ return caml_call1(old_exit, 0) /*<>*/ ; - } - /*<>*/ return set(at_exit_key, new_exit) /*<>*/ ; - } - function do_at_exit(param){ - var f = /*<>*/ get(at_exit_key); - /*<>*/ return caml_call1(f, 0) /*<>*/ ; - } - /*<>*/ Stdlib[104][1] = do_at_exit; - function spawn(f){ - /*<>*/ if - (1 - Stdlib_Atomic[3].call(null, first_domain_spawned)){ - /*<>*/ Stdlib_Atomic[4].call - (null, first_domain_spawned, 1); - /*<>*/ caml_call1(first_spawn_function[1], 0); - /*<>*/ first_spawn_function[1] = - function(param){ - /*<>*/ return 0; - /*<>*/ }; - } - var - _a_ = /*<>*/ Stdlib_Atomic[3].call(null, parent_keys), - pk = - /*<>*/ Stdlib_List[21].call - (null, - function(param){ - var split = /*<>*/ param[2], k = param[1]; - /*<>*/ return [0, - k, - /*<>*/ caml_call1 - (split, /*<>*/ get(k))] /*<>*/ ; - /*<>*/ }, - _a_), - _a_ = /*<>*/ Stdlib_Condition[1].call(null, 0), - term_sync = - /*<>*/ [0, 0, Stdlib_Mutex[1].call(null, 0), _a_]; - function body(param){ - /*<>*/ try{ - /*<>*/ create_dls(0); - /*<>*/ set_initial_keys(pk); - var res = /*<>*/ caml_call1(f, 0); - } - catch(exn$0){ - var exn = /*<>*/ caml_wrap_exception(exn$0); - try{ /*<>*/ do_at_exit(0);}catch(exn){} - /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); - } - /*<>*/ do_at_exit(0); - /*<>*/ return res; - /*<>*/ } + /*<>*/ } + function get_value(s){ + /*<>*/ return s[2]; + /*<>*/ } + function make$0(b){ var - domain = - /*<>*/ runtime.caml_domain_spawn(body, term_sync); - /*<>*/ return [0, domain, term_sync]; - /*<>*/ } - function join(_a_){ - var term_sync = /*<>*/ _a_[2]; - function loop(_a_){ - /*<>*/ for(;;){ - _a_ = term_sync[1]; - if(_a_){var res = _a_[1]; /*<>*/ return res;} - /*<>*/ Stdlib_Condition[2].call - (null, term_sync[3], term_sync[2]); + _a_ = /*<>*/ Stdlib_Condition[1].call(null, 0), + _b_ = /*<>*/ b ? 1 : 0; + /*<>*/ return [0, + Stdlib_Mutex[1].call(null, 0), + _b_, + _a_] /*<>*/ ; + /*<>*/ } + function release$0(s){ + /*<>*/ Stdlib_Mutex[2].call(null, s[1]); + /*<>*/ s[2] = 1; + /*<>*/ Stdlib_Condition[3].call(null, s[3]); + /*<>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<>*/ ; + } + function acquire$0(s){ + /*<>*/ Stdlib_Mutex[2].call(null, s[1]); + /*<>*/ for(;;){ + if(0 !== s[2]){ + /*<>*/ s[2] = 0; + /*<>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<>*/ ; } - /*<>*/ } - var - _a_ = - /*<>*/ Stdlib_Mutex[5].call(null, term_sync[2], loop); - /*<>*/ if(0 === _a_[0]){ - var x = _a_[1]; - /*<>*/ return x; + /*<>*/ Stdlib_Condition[2].call(null, s[3], s[1]); } - var ex = /*<>*/ _a_[1]; - throw caml_maybe_attach_backtrace(ex, 1); - /*<>*/ } - var - recommended_domain_count = - /*<>*/ runtime.caml_recommended_domain_count, - Stdlib_Domain = - [0, - spawn, - join, - get_id, - self, - before_first_spawn, - at_exit, - cpu_relax, - is_main_domain, - recommended_domain_count, - runtime.caml_ml_domain_index, - [0, new_key, get, set]]; - runtime.caml_register_global(Stdlib_Domain, "Stdlib__Domain"); + /*<>*/ } + function try_acquire$0(s){ + /*<>*/ Stdlib_Mutex[2].call(null, s[1]); + var ret = /*<>*/ 0 === s[2] ? 0 : (s[2] = 0, 1); + /*<>*/ Stdlib_Mutex[4].call(null, s[1]); + /*<>*/ return ret; + /*<>*/ } + /*<>*/ runtime.caml_register_global + ([0, + [0, make, release, acquire, try_acquire, get_value], + [0, make$0, release$0, acquire$0, try_acquire$0]], + "Stdlib__Semaphore"); return; - /*<>*/ } + } (globalThis)); //# unitInfo: Provides: CamlinternalFormat //# unitInfo: Requires: CamlinternalFormatBasics, Stdlib, Stdlib__Buffer, Stdlib__Bytes, Stdlib__Char, Stdlib__Int, Stdlib__String, Stdlib__Sys -//# shape: CamlinternalFormat:[F(2),F(1),F(1),F(2),F(1),F(2)*,F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1)*,F(1),F(1),F(1),F(1),F(1),F(2),F(2)] +//# shape: CamlinternalFormat:[F(2),F(1),F(1),F(2),F(1),F(2)*,F(3),F(3),F(2),F(2),F(2),N,F(4),F(2),F(2),F(2),F(2),F(1)*,F(1),F(1),F(1),F(1),F(1),F(2),F(2)] (function (globalThis){ "use strict"; @@ -14808,7 +16163,7 @@ /*<>*/ if(len < min_len){ var new_len = - /*<>*/ Stdlib_Int[11].call + /*<>*/ Stdlib_Int[15].call (null, len * 2 | 0, min_len), new_str = /*<>*/ caml_create_bytes(new_len); @@ -14826,7 +16181,7 @@ var str_len = /*<>*/ caml_ml_string_length(s); /*<>*/ buffer_check_size(buf, str_len); - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, s, 0, buf[2], buf[1], str_len); /*<>*/ buf[1] = buf[1] + str_len | 0; /*<>*/ } @@ -15045,7 +16400,7 @@ var width = /*<>*/ pad_opt[1]; /*<>*/ return /*<>*/ buffer_add_string (buf, - /*<>*/ Stdlib_Int[12].call + /*<>*/ Stdlib_Int[22].call (null, width)) /*<>*/ ; } function bprint_padding(buf, pad){ @@ -15056,7 +16411,7 @@ /*<>*/ bprint_padty(buf, padty); /*<>*/ return /*<>*/ buffer_add_string (buf, - /*<>*/ Stdlib_Int[12].call + /*<>*/ Stdlib_Int[22].call (null, n)) /*<>*/ ; } var padty$0 = /*<>*/ pad[1]; @@ -15069,7 +16424,7 @@ /*<>*/ buffer_add_char(buf, 46); /*<>*/ return /*<>*/ buffer_add_string (buf, - /*<>*/ Stdlib_Int[12].call + /*<>*/ Stdlib_Int[22].call (null, n)) /*<>*/ ; } /*<>*/ if(prec) @@ -17326,11 +18681,11 @@ (null, width$0, _ai_); /*<>*/ switch(padty$0){ case 0: - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 0, res, 0, len); break; case 1: - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 0, res, width$0 - len | 0, len); break; default: @@ -17349,7 +18704,7 @@ (res, 0, /*<>*/ caml_string_get(str, 0)); - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 1, res, (width$0 - len | 0) + 1 | 0, len - 1 | 0); break; } @@ -17369,11 +18724,11 @@ (res, 1, /*<>*/ caml_string_get(str, 1)); - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 2, res, (width$0 - len | 0) + 2 | 0, len - 2 | 0); break; } - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 0, res, width$0 - len | 0, len); } /*<>*/ return Stdlib_Bytes[44].call @@ -17412,7 +18767,7 @@ (res$1, 1, /*<>*/ caml_string_get(str, 1)); - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 2, res$1, (prec$0 - len | 0) + 4 | 0, len - 2 | 0); /*<>*/ return Stdlib_Bytes[44].call (null, res$1) /*<>*/ ; @@ -17432,7 +18787,7 @@ /*<>*/ Stdlib_Bytes[1].call (null, prec$0 + 1 | 0, 48); /*<>*/ caml_bytes_set(res$0, 0, c); - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 1, res$0, (prec$0 - len | 0) + 2 | 0, len - 1 | 0); /*<>*/ return Stdlib_Bytes[44].call (null, res$0) /*<>*/ ; @@ -17447,7 +18802,7 @@ res = /*<>*/ Stdlib_Bytes[1].call (null, prec$0, 48); - /*<>*/ Stdlib_String[6].call + /*<>*/ Stdlib_String[7].call (null, str, 0, res, prec$0 - len | 0, len); /*<>*/ return Stdlib_Bytes[44].call (null, res) /*<>*/ ; @@ -17458,7 +18813,7 @@ function string_to_caml_string(str){ var str$0 = - /*<>*/ Stdlib_String[25].call + /*<>*/ Stdlib_String[44].call (null, str), l = /*<>*/ caml_ml_string_length(str$0), res = @@ -17481,7 +18836,7 @@ /*<>*/ buffer_add_char(buf, 46); /*<>*/ /*<>*/ buffer_add_string (buf, - /*<>*/ Stdlib_Int[12].call(null, prec$0)); + /*<>*/ Stdlib_Int[22].call(null, prec$0)); /*<>*/ buffer_add_char(buf, symb); /*<>*/ return buffer_contents(buf) /*<>*/ ; } @@ -17755,7 +19110,7 @@ /*<>*/ return hex(0) /*<>*/ ; case 7: /*<>*/ _ah_ = hex(0); - /*<>*/ return Stdlib_String[26].call + /*<>*/ return Stdlib_String[45].call (null, _ah_) /*<>*/ ; case 8: /*<>*/ return /*<>*/ caml_special_val @@ -19041,20 +20396,46 @@ } } } + function apply(f$1, lst$0){ + var f = /*<>*/ f$1, lst = lst$0; + for(;;){ + if(! lst) /*<>*/ return f; + var + rest = /*<>*/ lst[2], + arg = lst[1], + f$0 = /*<>*/ caml_call1(f, arg); + /*<>*/ f = f$0; + lst = rest; + } + /*<>*/ } + function append(lst1, lst2){ + /*<>*/ if(! lst1) + /*<>*/ return lst2; + var xs = /*<>*/ lst1[2], x = lst1[1]; + /*<>*/ return [0, x, append(xs, lst2)] /*<>*/ ; + } + function symbol(lst1, lst2){ + /*<>*/ return append(lst1, lst2) /*<>*/ ; + } + function make_lprintf(k, acc, fmt, args){ + /*<>*/ return /*<>*/ apply + ( /*<>*/ make_printf(k, acc, fmt), + args) /*<>*/ ; + } function failwith_message(param){ var - fmt = /*<>*/ param[1], + fmt = /*<>*/ param[1], buf = - /*<>*/ Stdlib_Buffer[1].call(null, 256); + /*<>*/ Stdlib_Buffer[1].call(null, 256); function k(acc){ - /*<>*/ strput_acc(buf, acc); + /*<>*/ strput_acc(buf, acc); var _ag_ = - /*<>*/ Stdlib_Buffer[2].call + /*<>*/ Stdlib_Buffer[2].call (null, buf); - /*<>*/ return Stdlib[2].call(null, _ag_); + /*<>*/ return Stdlib[2].call(null, _ag_); } - /*<>*/ return make_printf(k, 0, fmt) /*<>*/ ; + /*<>*/ return make_printf(k, 0, fmt) /*<>*/ ; } var cst$1 = /*<>*/ "", @@ -19064,128 +20445,128 @@ [11, "invalid box description ", [3, 0, 0]], "invalid box description %S"]; function open_box_of_string(str){ - /*<>*/ if(str === cst$1) - /*<>*/ return _B_; + /*<>*/ if(str === cst$1) + /*<>*/ return _B_; var - len = /*<>*/ caml_ml_string_length(str); + len = /*<>*/ caml_ml_string_length(str); function invalid_box(param){ - /*<>*/ return caml_call1 - (failwith_message(_C_), str) /*<>*/ ; + /*<>*/ return caml_call1 + (failwith_message(_C_), str) /*<>*/ ; } function parse_spaces(i$1){ - var i = /*<>*/ i$1; + var i = /*<>*/ i$1; for(;;){ - if(i === len) /*<>*/ return i; + if(i === len) /*<>*/ return i; var - match = /*<>*/ caml_string_get(str, i); - /*<>*/ if(9 !== match && 32 !== match) - /*<>*/ return i; - var i$0 = /*<>*/ i + 1 | 0; + match = /*<>*/ caml_string_get(str, i); + /*<>*/ if(9 !== match && 32 !== match) + /*<>*/ return i; + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } var - wstart = /*<>*/ parse_spaces(0), - wend = /*<>*/ wstart; + wstart = /*<>*/ parse_spaces(0), + wend = /*<>*/ wstart; for(;;){ - /*<>*/ if(wend === len) break; - /*<>*/ if + /*<>*/ if(wend === len) break; + /*<>*/ if (25 < caml_string_get(str, wend) - 97 >>> 0) break; - var j = /*<>*/ wend + 1 | 0; + var j = /*<>*/ wend + 1 | 0; wend = j; } var box_name = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, str, wstart, wend - wstart | 0), - nstart = /*<>*/ parse_spaces(wend), - nend = /*<>*/ nstart; + nstart = /*<>*/ parse_spaces(wend), + nend = /*<>*/ nstart; for(;;){ - /*<>*/ if(nend === len) break; + /*<>*/ if(nend === len) break; var - _ag_ = /*<>*/ caml_string_get(str, nend); - /*<>*/ if(48 <= _ag_){ + _ag_ = /*<>*/ caml_string_get(str, nend); + /*<>*/ if(48 <= _ag_){ if(58 <= _ag_) break; } else if(45 !== _ag_) break; - var j$0 = /*<>*/ nend + 1 | 0; + var j$0 = /*<>*/ nend + 1 | 0; nend = j$0; } - /*<>*/ if(nstart === nend) - var indent = /*<>*/ 0; + /*<>*/ if(nstart === nend) + var indent = /*<>*/ 0; else - /*<>*/ try{ - /*<>*/ _ag_ = - /*<>*/ runtime.caml_int_of_string - ( /*<>*/ Stdlib_String[16].call + /*<>*/ try{ + /*<>*/ _ag_ = + /*<>*/ runtime.caml_int_of_string + ( /*<>*/ Stdlib_String[19].call (null, str, nstart, nend - nstart | 0)); indent = _ag_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn[1] !== Stdlib[7]) throw caml_maybe_attach_backtrace(exn, 0); - /*<>*/ indent = - /*<>*/ invalid_box(0); + /*<>*/ indent = + /*<>*/ invalid_box(0); } - var exp_end = /*<>*/ parse_spaces(nend); - /*<>*/ if(exp_end !== len) - /*<>*/ invalid_box(0); + var exp_end = /*<>*/ parse_spaces(nend); + /*<>*/ if(exp_end !== len) + /*<>*/ invalid_box(0); a: { - /*<>*/ if + /*<>*/ if (box_name !== cst$1 && box_name !== "b"){ if(box_name === "h"){ - var box_type = /*<>*/ 0; + var box_type = /*<>*/ 0; break a; } - /*<>*/ if(box_name === "hov"){ - /*<>*/ box_type = 3; + /*<>*/ if(box_name === "hov"){ + /*<>*/ box_type = 3; break a; } - /*<>*/ if(box_name === "hv"){ - /*<>*/ box_type = 2; + /*<>*/ if(box_name === "hv"){ + /*<>*/ box_type = 2; break a; } - /*<>*/ if(box_name !== "v"){ - /*<>*/ box_type = - /*<>*/ invalid_box(0); + /*<>*/ if(box_name !== "v"){ + /*<>*/ box_type = + /*<>*/ invalid_box(0); break a; } - /*<>*/ box_type = 1; + /*<>*/ box_type = 1; break a; } - /*<>*/ box_type = 4; + /*<>*/ box_type = 4; } - /*<>*/ return [0, indent, box_type]; - /*<>*/ } + /*<>*/ return [0, indent, box_type]; + /*<>*/ } function make_padding_fmt_ebb(pad, fmt){ - /*<>*/ if(typeof pad === "number") - /*<>*/ return [0, 0, fmt]; - /*<>*/ if(0 === pad[0]){ + /*<>*/ if(typeof pad === "number") + /*<>*/ return [0, 0, fmt]; + /*<>*/ if(0 === pad[0]){ var w = pad[2], s = pad[1]; - /*<>*/ return [0, [0, s, w], fmt]; + /*<>*/ return [0, [0, s, w], fmt]; } - var s$0 = /*<>*/ pad[1]; - /*<>*/ return [0, [1, s$0], fmt]; - /*<>*/ } + var s$0 = /*<>*/ pad[1]; + /*<>*/ return [0, [1, s$0], fmt]; + /*<>*/ } function make_padprec_fmt_ebb(pad, prec, fmt){ - /*<>*/ if(typeof prec === "number") + /*<>*/ if(typeof prec === "number") var match = prec ? [0, 1] : [0, 0]; else var p = prec[1], - match = /*<>*/ [0, [0, p]]; - var prec$0 = /*<>*/ match[1]; - /*<>*/ if(typeof pad === "number") - /*<>*/ return [0, 0, prec$0, fmt]; - /*<>*/ if(0 === pad[0]){ + match = /*<>*/ [0, [0, p]]; + var prec$0 = /*<>*/ match[1]; + /*<>*/ if(typeof pad === "number") + /*<>*/ return [0, 0, prec$0, fmt]; + /*<>*/ if(0 === pad[0]){ var w = pad[2], s = pad[1]; - /*<>*/ return [0, [0, s, w], prec$0, fmt]; + /*<>*/ return [0, [0, s, w], prec$0, fmt]; } - var s$0 = /*<>*/ pad[1]; - /*<>*/ return [0, [1, s$0], prec$0, fmt]; - /*<>*/ } + var s$0 = /*<>*/ pad[1]; + /*<>*/ return [0, [1, s$0], prec$0, fmt]; + /*<>*/ } var _d_ = /*<>*/ ", ", _c_ = ": at character number ", @@ -19295,7 +20676,7 @@ ": integer ", [4, 0, 0, 0, [11, " is greater than the limit ", [4, 0, 0, 0, 0]]]]]], "invalid format %S: integer %d is greater than the limit %d"], - _X_ = [0, _a_, 2837, 11], + _X_ = [0, _a_, 2866, 11], _Y_ = [0, [11, @@ -19306,9 +20687,9 @@ ': unclosed sub-format, expected "', [12, 37, [0, [11, '" at character number ', [4, 0, 0, 0, 0]]]]]]], 'invalid format %S: unclosed sub-format, expected "%%%c" at character number %d'], - _Z_ = [0, _a_, 2899, 34], - ___ = [0, _a_, 2935, 28], - _$_ = [0, _a_, 2957, 11], + _Z_ = [0, _a_, 2928, 34], + ___ = [0, _a_, 2964, 28], + _$_ = [0, _a_, 2986, 11], _aa_ = [0, [11, @@ -19330,157 +20711,157 @@ [0, [11, "' in sub-format ", [3, 0, 0]]]]]]]]]], "invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S"]; function fmt_ebb_of_string(legacy_behavior, str){ - /*<>*/ if(legacy_behavior) + /*<>*/ if(legacy_behavior) var flag = legacy_behavior[1], - legacy_behavior$0 = /*<>*/ flag; + legacy_behavior$0 = /*<>*/ flag; else - /*<>*/ legacy_behavior$0 = 1; + /*<>*/ legacy_behavior$0 = 1; function invalid_format_message(str_ind, msg){ - /*<>*/ return caml_call3 - (failwith_message(_D_), str, str_ind, msg) /*<>*/ ; + /*<>*/ return caml_call3 + (failwith_message(_D_), str, str_ind, msg) /*<>*/ ; } function invalid_format_without(str_ind, c, s){ - /*<>*/ return caml_call4 - (failwith_message(_E_), str, str_ind, c, s) /*<>*/ ; + /*<>*/ return caml_call4 + (failwith_message(_E_), str, str_ind, c, s) /*<>*/ ; } function expected_character(str_ind, expected, read){ - /*<>*/ return caml_call4 - (failwith_message(_F_), str, str_ind, expected, read) /*<>*/ ; + /*<>*/ return caml_call4 + (failwith_message(_F_), str, str_ind, expected, read) /*<>*/ ; } var cst_unexpected_end_of_format = /*<>*/ "unexpected end of format"; function parse(lit_start, end_ind){ - var str_ind = /*<>*/ lit_start; + var str_ind = /*<>*/ lit_start; for(;;){ - /*<>*/ if(str_ind === end_ind) - /*<>*/ return add_literal - (lit_start, str_ind, 0) /*<>*/ ; + /*<>*/ if(str_ind === end_ind) + /*<>*/ return add_literal + (lit_start, str_ind, 0) /*<>*/ ; var _ag_ = - /*<>*/ caml_string_get(str, str_ind); - /*<>*/ if(37 === _ag_) break; + /*<>*/ caml_string_get(str, str_ind); + /*<>*/ if(37 === _ag_) break; if(64 === _ag_){ var fmt_rest$0 = - /*<>*/ parse_after_at + /*<>*/ parse_after_at (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return add_literal - (lit_start, str_ind, fmt_rest$0) /*<>*/ ; + /*<>*/ return add_literal + (lit_start, str_ind, fmt_rest$0) /*<>*/ ; } - var str_ind$0 = /*<>*/ str_ind + 1 | 0; + var str_ind$0 = /*<>*/ str_ind + 1 | 0; str_ind = str_ind$0; } - var str_ind$1 = /*<>*/ str_ind + 1 | 0; - /*<>*/ if(str_ind$1 === end_ind) - /*<>*/ invalid_format_message + var str_ind$1 = /*<>*/ str_ind + 1 | 0; + /*<>*/ if(str_ind$1 === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); - /*<>*/ _ag_ = + /*<>*/ _ag_ = 95 === caml_string_get(str, str_ind$1) - ? /*<>*/ parse_flags + ? /*<>*/ parse_flags (str_ind, str_ind$1 + 1 | 0, end_ind, 1) - : /*<>*/ parse_flags + : /*<>*/ parse_flags (str_ind, str_ind$1, end_ind, 0); - var fmt_rest = /*<>*/ _ag_[1]; - /*<>*/ return add_literal - (lit_start, str_ind, fmt_rest) /*<>*/ ; + var fmt_rest = /*<>*/ _ag_[1]; + /*<>*/ return add_literal + (lit_start, str_ind, fmt_rest) /*<>*/ ; } var cst_0 = /*<>*/ "0"; function parse_flags(pct_ind, str_ind, end_ind, ign){ function set_flag(str_ind, flag){ var - _ag_ = /*<>*/ flag[1], + _ag_ = /*<>*/ flag[1], _ag_ = _ag_ ? 1 - legacy_behavior$0 : _ag_; if(_ag_){ - /*<>*/ _ag_ = + /*<>*/ _ag_ = caml_string_get(str, str_ind); - /*<>*/ caml_call3 + /*<>*/ caml_call3 (failwith_message(_G_), str, str_ind, _ag_); } - /*<>*/ flag[1] = 1; - /*<>*/ } + /*<>*/ flag[1] = 1; + /*<>*/ } var - str_ind$0 = /*<>*/ str_ind, - zero = /*<>*/ [0, 0], + str_ind$0 = /*<>*/ str_ind, + zero = /*<>*/ [0, 0], minus = [0, 0], plus = [0, 0], space = [0, 0], hash = [0, 0]; a: - /*<>*/ for(;;){ - /*<>*/ if(str_ind$0 === end_ind) - /*<>*/ invalid_format_message + /*<>*/ for(;;){ + /*<>*/ if(str_ind$0 === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var _ag_ = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind$0) - 32 | 0; - /*<>*/ if(16 < _ag_ >>> 0) break; + /*<>*/ if(16 < _ag_ >>> 0) break; switch(_ag_){ case 0: - /*<>*/ set_flag(str_ind$0, space); + /*<>*/ set_flag(str_ind$0, space); var - str_ind$1 = /*<>*/ str_ind$0 + 1 | 0; + str_ind$1 = /*<>*/ str_ind$0 + 1 | 0; str_ind$0 = str_ind$1; break; case 3: - /*<>*/ set_flag(str_ind$0, hash); + /*<>*/ set_flag(str_ind$0, hash); var - str_ind$2 = /*<>*/ str_ind$0 + 1 | 0; + str_ind$2 = /*<>*/ str_ind$0 + 1 | 0; str_ind$0 = str_ind$2; break; case 11: - /*<>*/ set_flag(str_ind$0, plus); + /*<>*/ set_flag(str_ind$0, plus); var - str_ind$3 = /*<>*/ str_ind$0 + 1 | 0; + str_ind$3 = /*<>*/ str_ind$0 + 1 | 0; str_ind$0 = str_ind$3; break; case 13: - /*<>*/ set_flag(str_ind$0, minus); + /*<>*/ set_flag(str_ind$0, minus); var - str_ind$4 = /*<>*/ str_ind$0 + 1 | 0; + str_ind$4 = /*<>*/ str_ind$0 + 1 | 0; str_ind$0 = str_ind$4; break; case 16: - /*<>*/ set_flag(str_ind$0, zero); + /*<>*/ set_flag(str_ind$0, zero); var - str_ind$5 = /*<>*/ str_ind$0 + 1 | 0; + str_ind$5 = /*<>*/ str_ind$0 + 1 | 0; str_ind$0 = str_ind$5; break; default: break a; } } var - space$0 = /*<>*/ space[1], + space$0 = /*<>*/ space[1], hash$0 = hash[1], plus$0 = plus[1], minus$0 = minus[1], zero$0 = zero[1]; - /*<>*/ if(str_ind$0 === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if(str_ind$0 === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var padty = - /*<>*/ zero$0 + /*<>*/ zero$0 ? minus$0 ? legacy_behavior$0 ? 0 - : /*<>*/ incompatible_flag + : /*<>*/ incompatible_flag (pct_ind, str_ind$0, 45, cst_0) : 2 : minus$0 ? 0 : 1, _ag_ = - /*<>*/ caml_string_get(str, str_ind$0); - /*<>*/ if(48 <= _ag_){ + /*<>*/ caml_string_get(str, str_ind$0); + /*<>*/ if(48 <= _ag_){ if(58 > _ag_){ - /*<>*/ _ag_ = + /*<>*/ _ag_ = parse_positive(str_ind$0, end_ind, 0); var - width = /*<>*/ _ag_[2], + width = /*<>*/ _ag_[2], new_ind = _ag_[1]; - /*<>*/ return parse_after_padding + /*<>*/ return parse_after_padding (pct_ind, new_ind, end_ind, @@ -19489,11 +20870,11 @@ hash$0, space$0, ign, - [0, padty, width]) /*<>*/ ; + [0, padty, width]) /*<>*/ ; } } else if(42 === _ag_) - /*<>*/ return parse_after_padding + /*<>*/ return parse_after_padding (pct_ind, str_ind$0 + 1 | 0, end_ind, @@ -19502,13 +20883,13 @@ hash$0, space$0, ign, - [1, padty]) /*<>*/ ; - /*<>*/ switch(padty){ + [1, padty]) /*<>*/ ; + /*<>*/ switch(padty){ case 0: - /*<>*/ if(1 - legacy_behavior$0) - /*<>*/ invalid_format_without + /*<>*/ if(1 - legacy_behavior$0) + /*<>*/ invalid_format_without (str_ind$0 - 1 | 0, 45, "padding"); - /*<>*/ return parse_after_padding + /*<>*/ return parse_after_padding (pct_ind, str_ind$0, end_ind, @@ -19517,9 +20898,9 @@ hash$0, space$0, ign, - 0) /*<>*/ ; + 0) /*<>*/ ; case 1: - /*<>*/ return parse_after_padding + /*<>*/ return parse_after_padding (pct_ind, str_ind$0, end_ind, @@ -19528,9 +20909,9 @@ hash$0, space$0, ign, - 0) /*<>*/ ; + 0) /*<>*/ ; default: - /*<>*/ return parse_after_padding + /*<>*/ return parse_after_padding (pct_ind, str_ind$0, end_ind, @@ -19539,20 +20920,20 @@ hash$0, space$0, ign, - _H_) /*<>*/ ; + _H_) /*<>*/ ; } } var cst_precision = /*<>*/ "precision"; function parse_after_padding (pct_ind, str_ind, end_ind, minus, plus, hash, space, ign, pad){ - /*<>*/ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if(str_ind === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var symb = - /*<>*/ caml_string_get(str, str_ind); - /*<>*/ if(46 !== symb) - /*<>*/ return parse_conversion + /*<>*/ caml_string_get(str, str_ind); + /*<>*/ if(46 !== symb) + /*<>*/ return parse_conversion (pct_ind, str_ind + 1 | 0, end_ind, @@ -19563,19 +20944,19 @@ pad, 0, pad, - symb) /*<>*/ ; - var str_ind$0 = /*<>*/ str_ind + 1 | 0; - /*<>*/ if(str_ind$0 === end_ind) - /*<>*/ invalid_format_message + symb) /*<>*/ ; + var str_ind$0 = /*<>*/ str_ind + 1 | 0; + /*<>*/ if(str_ind$0 === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); function parse_literal(minus, str_ind){ var match = - /*<>*/ parse_positive + /*<>*/ parse_positive (str_ind, end_ind, 0), - prec = /*<>*/ match[2], + prec = /*<>*/ match[2], new_ind = match[1]; - /*<>*/ return parse_after_precision + /*<>*/ return parse_after_precision (pct_ind, new_ind, end_ind, @@ -19585,20 +20966,20 @@ space, ign, pad, - [0, prec]) /*<>*/ ; + [0, prec]) /*<>*/ ; } var symb$0 = - /*<>*/ caml_string_get(str, str_ind$0); - /*<>*/ if(48 <= symb$0){ + /*<>*/ caml_string_get(str, str_ind$0); + /*<>*/ if(48 <= symb$0){ if(58 > symb$0) - /*<>*/ return parse_literal - (minus, str_ind$0) /*<>*/ ; + /*<>*/ return parse_literal + (minus, str_ind$0) /*<>*/ ; } else if(42 <= symb$0) - /*<>*/ switch(symb$0 - 42 | 0){ + /*<>*/ switch(symb$0 - 42 | 0){ case 0: - /*<>*/ return parse_after_precision + /*<>*/ return parse_after_precision (pct_ind, str_ind$0 + 1 | 0, end_ind, @@ -19608,19 +20989,19 @@ space, ign, pad, - 1) /*<>*/ ; + 1) /*<>*/ ; case 1: case 3: - /*<>*/ if(legacy_behavior$0){ + /*<>*/ if(legacy_behavior$0){ var - _ag_ = /*<>*/ str_ind$0 + 1 | 0, + _ag_ = /*<>*/ str_ind$0 + 1 | 0, minus$0 = minus || (45 === symb$0 ? 1 : 0); - return parse_literal(minus$0, _ag_) /*<>*/ ; + return parse_literal(minus$0, _ag_) /*<>*/ ; } break; } - /*<>*/ return legacy_behavior$0 - ? /*<>*/ parse_after_precision + /*<>*/ return legacy_behavior$0 + ? /*<>*/ parse_after_precision (pct_ind, str_ind$0, end_ind, @@ -19631,16 +21012,16 @@ ign, pad, _I_) - : /*<>*/ invalid_format_without - (str_ind$0 - 1 | 0, 46, cst_precision) /*<>*/ ; + : /*<>*/ invalid_format_without + (str_ind$0 - 1 | 0, 46, cst_precision) /*<>*/ ; } function parse_after_precision (pct_ind, str_ind, end_ind, minus, plus, hash, space, ign, pad, prec){ - /*<>*/ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if(str_ind === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); function parse_conv(padprec){ - /*<>*/ return /*<>*/ parse_conversion + /*<>*/ return /*<>*/ parse_conversion (pct_ind, str_ind + 1 | 0, end_ind, @@ -19651,24 +21032,24 @@ pad, prec, padprec, - /*<>*/ caml_string_get - (str, str_ind)) /*<>*/ ; + /*<>*/ caml_string_get + (str, str_ind)) /*<>*/ ; } - /*<>*/ if(typeof pad !== "number") - /*<>*/ return parse_conv(pad) /*<>*/ ; - /*<>*/ if + /*<>*/ if(typeof pad !== "number") + /*<>*/ return parse_conv(pad) /*<>*/ ; + /*<>*/ if (typeof prec === "number" && ! prec) - /*<>*/ return parse_conv(0) /*<>*/ ; - /*<>*/ if(minus){ + /*<>*/ return parse_conv(0) /*<>*/ ; + /*<>*/ if(minus){ if(typeof prec === "number") - /*<>*/ return parse_conv(_J_) /*<>*/ ; - var n = /*<>*/ prec[1]; - /*<>*/ return parse_conv([0, 0, n]) /*<>*/ ; + /*<>*/ return parse_conv(_J_) /*<>*/ ; + var n = /*<>*/ prec[1]; + /*<>*/ return parse_conv([0, 0, n]) /*<>*/ ; } - /*<>*/ if(typeof prec === "number") - /*<>*/ return parse_conv(_K_) /*<>*/ ; - var n$0 = /*<>*/ prec[1]; - /*<>*/ return parse_conv([0, 1, n$0]) /*<>*/ ; + /*<>*/ if(typeof prec === "number") + /*<>*/ return parse_conv(_K_) /*<>*/ ; + var n$0 = /*<>*/ prec[1]; + /*<>*/ return parse_conv([0, 1, n$0]) /*<>*/ ; } var cst$1 = /*<>*/ "' '", cst$0 = "'#'", cst = "'+'"; function parse_conversion @@ -19683,355 +21064,355 @@ prec, padprec, symb){ - var plus_used = /*<>*/ [0, 0]; + var plus_used = /*<>*/ [0, 0]; function get_plus(param){ - /*<>*/ plus_used[1] = 1; - /*<>*/ return plus; - /*<>*/ } - var hash_used = /*<>*/ [0, 0]; + /*<>*/ plus_used[1] = 1; + /*<>*/ return plus; + /*<>*/ } + var hash_used = /*<>*/ [0, 0]; function get_hash(param){ - /*<>*/ hash_used[1] = 1; - /*<>*/ return hash; - /*<>*/ } - var space_used = /*<>*/ [0, 0]; + /*<>*/ hash_used[1] = 1; + /*<>*/ return hash; + /*<>*/ } + var space_used = /*<>*/ [0, 0]; function get_space(param){ - /*<>*/ space_used[1] = 1; - /*<>*/ return space; - /*<>*/ } - var ign_used = /*<>*/ [0, 0]; + /*<>*/ space_used[1] = 1; + /*<>*/ return space; + /*<>*/ } + var ign_used = /*<>*/ [0, 0]; function get_ign(param){ - /*<>*/ ign_used[1] = 1; - /*<>*/ return ign; - /*<>*/ } - var pad_used = /*<>*/ [0, 0]; + /*<>*/ ign_used[1] = 1; + /*<>*/ return ign; + /*<>*/ } + var pad_used = /*<>*/ [0, 0]; function get_pad(param){ - /*<>*/ pad_used[1] = 1; - /*<>*/ return pad; - /*<>*/ } - var prec_used = /*<>*/ [0, 0]; + /*<>*/ pad_used[1] = 1; + /*<>*/ return pad; + /*<>*/ } + var prec_used = /*<>*/ [0, 0]; function get_prec(param){ - /*<>*/ prec_used[1] = 1; - /*<>*/ return prec; - /*<>*/ } + /*<>*/ prec_used[1] = 1; + /*<>*/ return prec; + /*<>*/ } function get_padprec(param){ - /*<>*/ pad_used[1] = 1; - /*<>*/ return padprec; - /*<>*/ } + /*<>*/ pad_used[1] = 1; + /*<>*/ return padprec; + /*<>*/ } function get_int_pad(_ag_){ var - pad = /*<>*/ get_pad(0), - _ag_ = /*<>*/ get_prec(0); - /*<>*/ if + pad = /*<>*/ get_pad(0), + _ag_ = /*<>*/ get_prec(0); + /*<>*/ if (typeof _ag_ === "number" && ! _ag_) - /*<>*/ return pad; - /*<>*/ if(typeof pad === "number") - /*<>*/ return 0; - /*<>*/ if(0 !== pad[0]) + /*<>*/ return pad; + /*<>*/ if(typeof pad === "number") + /*<>*/ return 0; + /*<>*/ if(0 !== pad[0]) return 2 <= pad[1] ? legacy_behavior$0 ? _L_ - : /*<>*/ incompatible_flag + : /*<>*/ incompatible_flag (pct_ind, str_ind, 48, cst_precision) - : pad /*<>*/ ; - /*<>*/ if(2 > pad[1]) - /*<>*/ return pad; - var n = /*<>*/ pad[2]; - /*<>*/ return legacy_behavior$0 + : pad /*<>*/ ; + /*<>*/ if(2 > pad[1]) + /*<>*/ return pad; + var n = /*<>*/ pad[2]; + /*<>*/ return legacy_behavior$0 ? [0, 1, n] - : /*<>*/ incompatible_flag - (pct_ind, str_ind, 48, cst_precision) /*<>*/ ; + : /*<>*/ incompatible_flag + (pct_ind, str_ind, 48, cst_precision) /*<>*/ ; } function check_no_0(symb, pad){ - /*<>*/ if(typeof pad === "number") - /*<>*/ return pad; - /*<>*/ if(0 !== pad[0]) + /*<>*/ if(typeof pad === "number") + /*<>*/ return pad; + /*<>*/ if(0 !== pad[0]) return 2 <= pad[1] ? legacy_behavior$0 ? _M_ - : /*<>*/ incompatible_flag + : /*<>*/ incompatible_flag (pct_ind, str_ind, symb, cst_0) - : pad /*<>*/ ; - /*<>*/ if(2 > pad[1]) - /*<>*/ return pad; - var width = /*<>*/ pad[2]; - /*<>*/ return legacy_behavior$0 + : pad /*<>*/ ; + /*<>*/ if(2 > pad[1]) + /*<>*/ return pad; + var width = /*<>*/ pad[2]; + /*<>*/ return legacy_behavior$0 ? [0, 1, width] - : /*<>*/ incompatible_flag - (pct_ind, str_ind, symb, cst_0) /*<>*/ ; + : /*<>*/ incompatible_flag + (pct_ind, str_ind, symb, cst_0) /*<>*/ ; } var cst$2 = /*<>*/ "'*'"; function opt_of_pad(c, pad){ - /*<>*/ if(typeof pad === "number") - /*<>*/ return 0; - /*<>*/ if(0 === pad[0]) + /*<>*/ if(typeof pad === "number") + /*<>*/ return 0; + /*<>*/ if(0 === pad[0]) switch(pad[1]){ case 0: var width = pad[2]; - /*<>*/ return legacy_behavior$0 + /*<>*/ return legacy_behavior$0 ? [0, width] - : /*<>*/ incompatible_flag - (pct_ind, str_ind, c, "'-'") /*<>*/ ; + : /*<>*/ incompatible_flag + (pct_ind, str_ind, c, "'-'") /*<>*/ ; case 1: - var width$0 = /*<>*/ pad[2]; - /*<>*/ return [0, width$0]; + var width$0 = /*<>*/ pad[2]; + /*<>*/ return [0, width$0]; default: - var width$1 = /*<>*/ pad[2]; - /*<>*/ return legacy_behavior$0 + var width$1 = /*<>*/ pad[2]; + /*<>*/ return legacy_behavior$0 ? [0, width$1] - : /*<>*/ incompatible_flag - (pct_ind, str_ind, c, "'0'") /*<>*/ ; + : /*<>*/ incompatible_flag + (pct_ind, str_ind, c, "'0'") /*<>*/ ; } - /*<>*/ return incompatible_flag - (pct_ind, str_ind, c, cst$2) /*<>*/ ; + /*<>*/ return incompatible_flag + (pct_ind, str_ind, c, cst$2) /*<>*/ ; } function get_pad_opt(c){ - /*<>*/ return /*<>*/ opt_of_pad - (c, /*<>*/ get_pad(0)) /*<>*/ ; + /*<>*/ return /*<>*/ opt_of_pad + (c, /*<>*/ get_pad(0)) /*<>*/ ; } function get_padprec_opt(c){ - /*<>*/ return /*<>*/ opt_of_pad - (c, /*<>*/ get_padprec(0)) /*<>*/ ; + /*<>*/ return /*<>*/ opt_of_pad + (c, /*<>*/ get_padprec(0)) /*<>*/ ; } a: { - /*<>*/ if(124 > symb) + /*<>*/ if(124 > symb) switch(symb){ case 33: var fmt_rest$5 = - /*<>*/ parse(str_ind, end_ind)[1], + /*<>*/ parse(str_ind, end_ind)[1], fmt_result = - /*<>*/ [0, [10, fmt_rest$5]]; + /*<>*/ [0, [10, fmt_rest$5]]; break a; case 40: var sub_end = - /*<>*/ search_subformat_end + /*<>*/ search_subformat_end (str_ind, end_ind, 41), fmt_rest$7 = - /*<>*/ parse + /*<>*/ parse (sub_end + 2 | 0, end_ind) [1], sub_fmt = - /*<>*/ parse(str_ind, sub_end)[1], + /*<>*/ parse(str_ind, sub_end)[1], sub_fmtty = - /*<>*/ fmtty_of_fmt(sub_fmt); - /*<>*/ if(get_ign(0)){ + /*<>*/ fmtty_of_fmt(sub_fmt); + /*<>*/ if(get_ign(0)){ var ignored$2 = - /*<>*/ [9, + /*<>*/ [9, get_pad_opt(95), sub_fmtty], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$2, fmt_rest$7]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [14, - /*<>*/ get_pad_opt(40), + /*<>*/ get_pad_opt(40), sub_fmtty, fmt_rest$7]]; break a; case 44: - /*<>*/ fmt_result = - /*<>*/ parse(str_ind, end_ind); + /*<>*/ fmt_result = + /*<>*/ parse(str_ind, end_ind); break a; case 67: var fmt_rest$10 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ if(get_ign(0)){ - /*<>*/ fmt_result = + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ if(get_ign(0)){ + /*<>*/ fmt_result = [0, [23, 1, fmt_rest$10]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [1, fmt_rest$10]]; break a; case 78: var fmt_rest$14 = - /*<>*/ parse(str_ind, end_ind)[1], - counter$0 = /*<>*/ 2; - /*<>*/ if(get_ign(0)){ - /*<>*/ fmt_result = + /*<>*/ parse(str_ind, end_ind)[1], + counter$0 = /*<>*/ 2; + /*<>*/ if(get_ign(0)){ + /*<>*/ fmt_result = [0, [23, [11, counter$0], fmt_rest$14]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [21, counter$0, fmt_rest$14]]; break a; case 83: var pad$6 = - /*<>*/ /*<>*/ check_no_0 - (symb, /*<>*/ get_padprec(0)), + /*<>*/ /*<>*/ check_no_0 + (symb, /*<>*/ get_padprec(0)), fmt_rest$15 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ if(get_ign(0)){ var ignored$6 = - /*<>*/ [1, get_padprec_opt(95)], + /*<>*/ [1, get_padprec_opt(95)], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$6, fmt_rest$15]]; break a; } var _ae_ = - /*<>*/ make_padding_fmt_ebb + /*<>*/ make_padding_fmt_ebb (pad$6, fmt_rest$15), - fmt_rest$16 = /*<>*/ _ae_[2], + fmt_rest$16 = /*<>*/ _ae_[2], pad$7 = _ae_[1], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [3, pad$7, fmt_rest$16]]; break a; case 91: - /*<>*/ _ae_ = + /*<>*/ _ae_ = parse_char_set(str_ind, end_ind); var - char_set = /*<>*/ _ae_[2], + char_set = /*<>*/ _ae_[2], next_ind = _ae_[1], fmt_rest$19 = - /*<>*/ parse(next_ind, end_ind) + /*<>*/ parse(next_ind, end_ind) [1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ if(get_ign(0)){ var ignored$8 = - /*<>*/ [10, + /*<>*/ [10, get_pad_opt(95), char_set], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$8, fmt_rest$19]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [20, - /*<>*/ get_pad_opt(91), + /*<>*/ get_pad_opt(91), char_set, fmt_rest$19]]; break a; case 97: var fmt_rest$20 = - /*<>*/ parse(str_ind, end_ind)[1], + /*<>*/ parse(str_ind, end_ind)[1], fmt_result = - /*<>*/ [0, [15, fmt_rest$20]]; + /*<>*/ [0, [15, fmt_rest$20]]; break a; case 99: var char_format = - /*<>*/ function(fmt_rest){ - /*<>*/ return get_ign(0) + /*<>*/ function(fmt_rest){ + /*<>*/ return get_ign(0) ? [0, [23, 0, fmt_rest]] - : [0, [0, fmt_rest]] /*<>*/ ; + : [0, [0, fmt_rest]] /*<>*/ ; }, fmt_rest$21 = - /*<>*/ parse(str_ind, end_ind)[1], - _ae_ = /*<>*/ get_pad_opt(99); - /*<>*/ if(! _ae_){ - /*<>*/ fmt_result = - /*<>*/ char_format(fmt_rest$21); + /*<>*/ parse(str_ind, end_ind)[1], + _ae_ = /*<>*/ get_pad_opt(99); + /*<>*/ if(! _ae_){ + /*<>*/ fmt_result = + /*<>*/ char_format(fmt_rest$21); break a; } - var n = /*<>*/ _ae_[1]; + var n = /*<>*/ _ae_[1]; if(0 === n){ - /*<>*/ if(get_ign(0)){ - /*<>*/ fmt_result = + /*<>*/ if(get_ign(0)){ + /*<>*/ fmt_result = [0, [23, 3, fmt_rest$21]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [22, fmt_rest$21]]; break a; } - /*<>*/ if(legacy_behavior$0){ - /*<>*/ fmt_result = - /*<>*/ char_format(fmt_rest$21); + /*<>*/ if(legacy_behavior$0){ + /*<>*/ fmt_result = + /*<>*/ char_format(fmt_rest$21); break a; } - /*<>*/ fmt_result = - /*<>*/ invalid_format_message + /*<>*/ fmt_result = + /*<>*/ invalid_format_message (str_ind, "non-zero widths are unsupported for %c conversions"); break a; case 114: var fmt_rest$22 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ if(get_ign(0)){ - /*<>*/ fmt_result = + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ if(get_ign(0)){ + /*<>*/ fmt_result = [0, [23, 2, fmt_rest$22]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [19, fmt_rest$22]]; break a; case 115: var pad$9 = - /*<>*/ /*<>*/ check_no_0 - (symb, /*<>*/ get_padprec(0)), + /*<>*/ /*<>*/ check_no_0 + (symb, /*<>*/ get_padprec(0)), fmt_rest$23 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ if(get_ign(0)){ var ignored$9 = - /*<>*/ [0, get_padprec_opt(95)], + /*<>*/ [0, get_padprec_opt(95)], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$9, fmt_rest$23]]; break a; } - /*<>*/ _ae_ = + /*<>*/ _ae_ = make_padding_fmt_ebb(pad$9, fmt_rest$23); var - fmt_rest$24 = /*<>*/ _ae_[2], + fmt_rest$24 = /*<>*/ _ae_[2], pad$10 = _ae_[1], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [2, pad$10, fmt_rest$24]]; break a; case 116: var fmt_rest$25 = - /*<>*/ parse(str_ind, end_ind)[1], + /*<>*/ parse(str_ind, end_ind)[1], fmt_result = - /*<>*/ [0, [16, fmt_rest$25]]; + /*<>*/ [0, [16, fmt_rest$25]]; break a; case 123: var sub_end$0 = - /*<>*/ search_subformat_end + /*<>*/ search_subformat_end (str_ind, end_ind, 125), sub_fmt$0 = - /*<>*/ parse(str_ind, sub_end$0) + /*<>*/ parse(str_ind, sub_end$0) [1], fmt_rest$26 = - /*<>*/ parse + /*<>*/ parse (sub_end$0 + 2 | 0, end_ind) [1], sub_fmtty$0 = - /*<>*/ fmtty_of_fmt(sub_fmt$0); - /*<>*/ if(get_ign(0)){ + /*<>*/ fmtty_of_fmt(sub_fmt$0); + /*<>*/ if(get_ign(0)){ var ignored$10 = - /*<>*/ [8, + /*<>*/ [8, get_pad_opt(95), sub_fmtty$0], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$10, fmt_rest$26]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [13, - /*<>*/ get_pad_opt(123), + /*<>*/ get_pad_opt(123), sub_fmtty$0, fmt_rest$26]]; break a; @@ -20039,44 +21420,44 @@ case 98: var pad$3 = - /*<>*/ /*<>*/ check_no_0 - (symb, /*<>*/ get_padprec(0)), + /*<>*/ /*<>*/ check_no_0 + (symb, /*<>*/ get_padprec(0)), fmt_rest$8 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ if(get_ign(0)){ var ignored$3 = - /*<>*/ [7, get_padprec_opt(95)], + /*<>*/ [7, get_padprec_opt(95)], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$3, fmt_rest$8]]; break a; } - /*<>*/ _ae_ = + /*<>*/ _ae_ = make_padding_fmt_ebb(pad$3, fmt_rest$8); var - fmt_rest$9 = /*<>*/ _ae_[2], + fmt_rest$9 = /*<>*/ _ae_[2], pad$4 = _ae_[1], fmt_result = - /*<>*/ [0, [9, pad$4, fmt_rest$9]]; + /*<>*/ [0, [9, pad$4, fmt_rest$9]]; break a; case 37: case 64: var fmt_rest$6 = - /*<>*/ parse(str_ind, end_ind)[1], + /*<>*/ parse(str_ind, end_ind)[1], fmt_result = - /*<>*/ [0, [12, symb, fmt_rest$6]]; + /*<>*/ [0, [12, symb, fmt_rest$6]]; break a; case 76: case 108: case 110: - /*<>*/ if(str_ind !== end_ind){ + /*<>*/ if(str_ind !== end_ind){ var symb$0 = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind), - _ae_ = /*<>*/ symb$0 - 88 | 0; + _ae_ = /*<>*/ symb$0 - 88 | 0; b: { if(32 >= _ae_ >>> 0) @@ -20087,43 +21468,43 @@ case 23: case 29: case 32: - /*<>*/ _ae_ = 1; break b; + /*<>*/ _ae_ = 1; break b; } - /*<>*/ _ae_ = 0; + /*<>*/ _ae_ = 0; } - /*<>*/ if(_ae_) break; + /*<>*/ if(_ae_) break; } var fmt_rest$13 = - /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ parse(str_ind, end_ind)[1]; b: { - /*<>*/ if(108 <= symb){ + /*<>*/ if(108 <= symb){ if(111 > symb) switch(symb - 108 | 0){ case 0: - var counter = /*<>*/ 0; + var counter = /*<>*/ 0; break b; case 2: - /*<>*/ counter = 1; break b; + /*<>*/ counter = 1; break b; } } else if(76 === symb){ - /*<>*/ counter = 2; + /*<>*/ counter = 2; break b; } - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _Z_], 1); } - /*<>*/ if(get_ign(0)){ + /*<>*/ if(get_ign(0)){ var - ignored$5 = /*<>*/ [11, counter], + ignored$5 = /*<>*/ [11, counter], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$5, fmt_rest$13]]; break a; } - /*<>*/ fmt_result = + /*<>*/ fmt_result = [0, [21, counter, fmt_rest$13]]; break a; case 32: @@ -20131,8 +21512,8 @@ case 43: case 45: case 95: - /*<>*/ fmt_result = - /*<>*/ caml_call3 + /*<>*/ fmt_result = + /*<>*/ caml_call3 (failwith_message(_Q_), str, pct_ind, symb); break a; case 88: @@ -20141,42 +21522,42 @@ case 111: case 117: case 120: - /*<>*/ _ae_ = get_space(0); + /*<>*/ _ae_ = get_space(0); var - _af_ = /*<>*/ get_hash(0), + _af_ = /*<>*/ get_hash(0), iconv$2 = - /*<>*/ /*<>*/ compute_int_conv + /*<>*/ /*<>*/ compute_int_conv (pct_ind, str_ind, - /*<>*/ get_plus(0), + /*<>*/ get_plus(0), _af_, _ae_, symb), fmt_rest$17 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ if(get_ign(0)){ var ignored$7 = - /*<>*/ [2, + /*<>*/ [2, iconv$2, get_pad_opt(95)], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$7, fmt_rest$17]]; break a; } - /*<>*/ _ae_ = get_prec(0); - /*<>*/ _ae_ = - /*<>*/ make_padprec_fmt_ebb - ( /*<>*/ get_int_pad(0), + /*<>*/ _ae_ = get_prec(0); + /*<>*/ _ae_ = + /*<>*/ make_padprec_fmt_ebb + ( /*<>*/ get_int_pad(0), _ae_, fmt_rest$17); var - fmt_rest$18 = /*<>*/ _ae_[3], + fmt_rest$18 = /*<>*/ _ae_[3], prec$4 = _ae_[2], pad$8 = _ae_[1], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [4, iconv$2, pad$8, prec$4, fmt_rest$18]]; break a; case 69: @@ -20188,467 +21569,467 @@ case 103: case 104: var - space$1 = /*<>*/ get_space(0), - hash$1 = /*<>*/ get_hash(0), - plus$2 = /*<>*/ get_plus(0), + space$1 = /*<>*/ get_space(0), + hash$1 = /*<>*/ get_hash(0), + plus$2 = /*<>*/ get_plus(0), flag = - /*<>*/ plus$2 + /*<>*/ plus$2 ? space$1 ? legacy_behavior$0 ? 1 - : /*<>*/ incompatible_flag + : /*<>*/ incompatible_flag (pct_ind, str_ind, 32, cst) : 1 : space$1 ? 2 : 0; b: { - /*<>*/ if(73 <= symb){ + /*<>*/ if(73 <= symb){ _ae_ = symb - 101 | 0; if(3 >= _ae_ >>> 0) switch(_ae_){ case 0: - var kind = /*<>*/ 1; break b; + var kind = /*<>*/ 1; break b; case 1: - /*<>*/ kind = 0; break b; + /*<>*/ kind = 0; break b; case 2: - /*<>*/ kind = 3; break b; + /*<>*/ kind = 3; break b; default: - /*<>*/ kind = 6; break b; + /*<>*/ kind = 6; break b; } } else if(69 <= symb) - /*<>*/ switch(symb - 69 | 0){ + /*<>*/ switch(symb - 69 | 0){ case 0: - /*<>*/ kind = 2; break b; + /*<>*/ kind = 2; break b; case 2: - /*<>*/ kind = 4; break b; + /*<>*/ kind = 4; break b; case 3: - /*<>*/ kind = 7; break b; + /*<>*/ kind = 7; break b; } - /*<>*/ if(hash$1){ + /*<>*/ if(hash$1){ if(70 === symb){ - /*<>*/ kind = 8; + /*<>*/ kind = 8; break b; } } else if(70 === symb){ - /*<>*/ kind = 5; + /*<>*/ kind = 5; break b; } - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _$_], 1); } var - fconv = /*<>*/ [0, flag, kind], + fconv = /*<>*/ [0, flag, kind], fmt_rest$11 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ if(! get_ign(0)){ - /*<>*/ _ae_ = get_prec(0); - /*<>*/ _ae_ = - /*<>*/ make_padprec_fmt_ebb - ( /*<>*/ get_pad(0), + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ if(! get_ign(0)){ + /*<>*/ _ae_ = get_prec(0); + /*<>*/ _ae_ = + /*<>*/ make_padprec_fmt_ebb + ( /*<>*/ get_pad(0), _ae_, fmt_rest$11); var - fmt_rest$12 = /*<>*/ _ae_[3], + fmt_rest$12 = /*<>*/ _ae_[3], prec$3 = _ae_[2], pad$5 = _ae_[1], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [8, fconv, pad$5, prec$3, fmt_rest$12]]; break a; } - /*<>*/ _ae_ = get_prec(0); - /*<>*/ if(typeof _ae_ === "number") + /*<>*/ _ae_ = get_prec(0); + /*<>*/ if(typeof _ae_ === "number") _ae_ = _ae_ - ? /*<>*/ incompatible_flag + ? /*<>*/ incompatible_flag (pct_ind, str_ind, 95, cst$2) : 0; else var - ndec = /*<>*/ _ae_[1], - _ae_ = /*<>*/ [0, ndec]; + ndec = /*<>*/ _ae_[1], + _ae_ = /*<>*/ [0, ndec]; var ignored$4 = - /*<>*/ [6, get_pad_opt(95), _ae_], + /*<>*/ [6, get_pad_opt(95), _ae_], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$4, fmt_rest$11]]; break a; } - /*<>*/ if(108 <= symb){ + /*<>*/ if(108 <= symb){ if(111 > symb) switch(symb - 108 | 0){ case 0: - /*<>*/ _ae_ = + /*<>*/ _ae_ = caml_string_get(str, str_ind); - /*<>*/ _af_ = get_space(0); + /*<>*/ _af_ = get_space(0); var - _ag_ = /*<>*/ get_hash(0), + _ag_ = /*<>*/ get_hash(0), iconv = - /*<>*/ /*<>*/ compute_int_conv + /*<>*/ /*<>*/ compute_int_conv (pct_ind, str_ind + 1 | 0, - /*<>*/ get_plus(0), + /*<>*/ get_plus(0), _ag_, _af_, _ae_), fmt_rest = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ if(get_ign(0)){ var ignored = - /*<>*/ [3, + /*<>*/ [3, iconv, get_pad_opt(95)], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored, fmt_rest]]; break a; } - /*<>*/ _ag_ = get_prec(0); - /*<>*/ _ag_ = - /*<>*/ make_padprec_fmt_ebb - ( /*<>*/ get_int_pad(0), + /*<>*/ _ag_ = get_prec(0); + /*<>*/ _ag_ = + /*<>*/ make_padprec_fmt_ebb + ( /*<>*/ get_int_pad(0), _ag_, fmt_rest); var - fmt_rest$0 = /*<>*/ _ag_[3], + fmt_rest$0 = /*<>*/ _ag_[3], prec$0 = _ag_[2], pad$0 = _ag_[1], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [5, iconv, pad$0, prec$0, fmt_rest$0]]; break a; case 2: - /*<>*/ _ag_ = + /*<>*/ _ag_ = caml_string_get(str, str_ind); - /*<>*/ _ae_ = get_space(0); - /*<>*/ _af_ = get_hash(0); + /*<>*/ _ae_ = get_space(0); + /*<>*/ _af_ = get_hash(0); var iconv$0 = - /*<>*/ /*<>*/ compute_int_conv + /*<>*/ /*<>*/ compute_int_conv (pct_ind, str_ind + 1 | 0, - /*<>*/ get_plus(0), + /*<>*/ get_plus(0), _af_, _ae_, _ag_), fmt_rest$1 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ if(get_ign(0)){ var ignored$0 = - /*<>*/ [4, + /*<>*/ [4, iconv$0, get_pad_opt(95)], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$0, fmt_rest$1]]; break a; } - /*<>*/ _af_ = get_prec(0); - /*<>*/ _af_ = - /*<>*/ make_padprec_fmt_ebb - ( /*<>*/ get_int_pad(0), + /*<>*/ _af_ = get_prec(0); + /*<>*/ _af_ = + /*<>*/ make_padprec_fmt_ebb + ( /*<>*/ get_int_pad(0), _af_, fmt_rest$1); var - fmt_rest$2 = /*<>*/ _af_[3], + fmt_rest$2 = /*<>*/ _af_[3], prec$1 = _af_[2], pad$1 = _af_[1], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [6, iconv$0, pad$1, prec$1, fmt_rest$2]]; break a; } } else if(76 === symb){ - /*<>*/ _af_ = + /*<>*/ _af_ = caml_string_get(str, str_ind); - /*<>*/ _ag_ = get_space(0); - /*<>*/ _ae_ = get_hash(0); + /*<>*/ _ag_ = get_space(0); + /*<>*/ _ae_ = get_hash(0); var iconv$1 = - /*<>*/ /*<>*/ compute_int_conv + /*<>*/ /*<>*/ compute_int_conv (pct_ind, str_ind + 1 | 0, - /*<>*/ get_plus(0), + /*<>*/ get_plus(0), _ae_, _ag_, _af_), fmt_rest$3 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ if(get_ign(0)){ + /*<>*/ if(get_ign(0)){ var ignored$1 = - /*<>*/ [5, + /*<>*/ [5, iconv$1, get_pad_opt(95)], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [23, ignored$1, fmt_rest$3]]; break a; } - /*<>*/ _ae_ = get_prec(0); - /*<>*/ _ae_ = - /*<>*/ make_padprec_fmt_ebb - ( /*<>*/ get_int_pad(0), + /*<>*/ _ae_ = get_prec(0); + /*<>*/ _ae_ = + /*<>*/ make_padprec_fmt_ebb + ( /*<>*/ get_int_pad(0), _ae_, fmt_rest$3); var - fmt_rest$4 = /*<>*/ _ae_[3], + fmt_rest$4 = /*<>*/ _ae_[3], prec$2 = _ae_[2], pad$2 = _ae_[1], fmt_result = - /*<>*/ [0, + /*<>*/ [0, [7, iconv$1, pad$2, prec$2, fmt_rest$4]]; break a; } - /*<>*/ fmt_result = - /*<>*/ caml_call3 + /*<>*/ fmt_result = + /*<>*/ caml_call3 (failwith_message(_N_), str, str_ind - 1 | 0, symb); } - /*<>*/ if(1 - legacy_behavior$0){ - /*<>*/ _ae_ = 1 - plus_used[1]; + /*<>*/ if(1 - legacy_behavior$0){ + /*<>*/ _ae_ = 1 - plus_used[1]; var plus$0 = _ae_ ? plus : _ae_; if(plus$0) - /*<>*/ incompatible_flag + /*<>*/ incompatible_flag (pct_ind, str_ind, symb, cst); - /*<>*/ _ae_ = 1 - hash_used[1]; + /*<>*/ _ae_ = 1 - hash_used[1]; var hash$0 = _ae_ ? hash : _ae_; if(hash$0) - /*<>*/ incompatible_flag + /*<>*/ incompatible_flag (pct_ind, str_ind, symb, cst$0); - /*<>*/ _ae_ = 1 - space_used[1]; + /*<>*/ _ae_ = 1 - space_used[1]; var space$0 = _ae_ ? space : _ae_; if(space$0) - /*<>*/ incompatible_flag + /*<>*/ incompatible_flag (pct_ind, str_ind, symb, cst$1); - /*<>*/ _ae_ = 1 - pad_used[1]; + /*<>*/ _ae_ = 1 - pad_used[1]; _ae_ = _ae_ - ? /*<>*/ caml_notequal([0, pad], _O_) + ? /*<>*/ caml_notequal([0, pad], _O_) : _ae_; - /*<>*/ if(_ae_) - /*<>*/ incompatible_flag + /*<>*/ if(_ae_) + /*<>*/ incompatible_flag (pct_ind, str_ind, symb, "`padding'"); - /*<>*/ _ae_ = 1 - prec_used[1]; + /*<>*/ _ae_ = 1 - prec_used[1]; _ae_ = _ae_ - ? /*<>*/ caml_notequal([0, prec], _P_) + ? /*<>*/ caml_notequal([0, prec], _P_) : _ae_; - /*<>*/ if(_ae_){ - /*<>*/ _ae_ = ign ? 95 : symb; + /*<>*/ if(_ae_){ + /*<>*/ _ae_ = ign ? 95 : symb; incompatible_flag(pct_ind, str_ind, _ae_, "`precision'"); } - var plus$1 = /*<>*/ ign ? plus : ign; + var plus$1 = /*<>*/ ign ? plus : ign; if(plus$1) - /*<>*/ incompatible_flag + /*<>*/ incompatible_flag (pct_ind, str_ind, 95, cst); } - /*<>*/ _ae_ = 1 - ign_used[1]; + /*<>*/ _ae_ = 1 - ign_used[1]; var ign$0 = _ae_ ? ign : _ae_; a: if(ign$0){ b: { - /*<>*/ if(38 <= symb){ + /*<>*/ if(38 <= symb){ if(44 !== symb && 64 !== symb) break b; } else if(33 !== symb && 37 > symb) break b; - /*<>*/ if(legacy_behavior$0) break a; + /*<>*/ if(legacy_behavior$0) break a; } - /*<>*/ incompatible_flag + /*<>*/ incompatible_flag (pct_ind, str_ind, symb, "'_'"); } - /*<>*/ return fmt_result; + /*<>*/ return fmt_result; } function parse_after_at(str_ind, end_ind){ - /*<>*/ if(str_ind === end_ind) - /*<>*/ return _R_; + /*<>*/ if(str_ind === end_ind) + /*<>*/ return _R_; var - c = /*<>*/ caml_string_get(str, str_ind); - /*<>*/ if(65 <= c){ + c = /*<>*/ caml_string_get(str, str_ind); + /*<>*/ if(65 <= c){ if(94 <= c){ var _ae_ = c - 123 | 0; if(2 >= _ae_ >>> 0) switch(_ae_){ case 0: - /*<>*/ return parse_tag - (1, str_ind + 1 | 0, end_ind) /*<>*/ ; + /*<>*/ return parse_tag + (1, str_ind + 1 | 0, end_ind) /*<>*/ ; case 2: var fmt_rest$0 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, 1, fmt_rest$0]]; } } else if(91 <= c) - /*<>*/ switch(c - 91 | 0){ + /*<>*/ switch(c - 91 | 0){ case 0: - /*<>*/ return parse_tag - (0, str_ind + 1 | 0, end_ind) /*<>*/ ; + /*<>*/ return parse_tag + (0, str_ind + 1 | 0, end_ind) /*<>*/ ; case 2: var fmt_rest$1 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, 0, fmt_rest$1]]; } } else{ - /*<>*/ if(10 === c){ + /*<>*/ if(10 === c){ var fmt_rest$2 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, [17, 3, fmt_rest$2]]; + /*<>*/ return [0, [17, 3, fmt_rest$2]]; } - /*<>*/ if(32 <= c) + /*<>*/ if(32 <= c) switch(c - 32 | 0){ case 0: var fmt_rest$3 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, _S_, fmt_rest$3]]; case 5: - /*<>*/ if + /*<>*/ if ((str_ind + 1 | 0) < end_ind && 37 === - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind + 1 | 0)){ var fmt_rest$4 = - /*<>*/ parse + /*<>*/ parse (str_ind + 2 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, 6, fmt_rest$4]]; } var fmt_rest$5 = - /*<>*/ parse(str_ind, end_ind)[1]; - /*<>*/ return [0, + /*<>*/ parse(str_ind, end_ind)[1]; + /*<>*/ return [0, [12, 64, fmt_rest$5]]; case 12: var fmt_rest$6 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, _T_, fmt_rest$6]]; case 14: var fmt_rest$7 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, 4, fmt_rest$7]]; case 27: var - str_ind$0 = /*<>*/ str_ind + 1 | 0; + str_ind$0 = /*<>*/ str_ind + 1 | 0; a: try{ _ae_ = str_ind$0 === end_ind; _ae_ ||= 60 !== - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind$0); if(_ae_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var str_ind_1 = - /*<>*/ parse_spaces + /*<>*/ parse_spaces (str_ind$0 + 1 | 0, end_ind), _ae_ = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind_1); b: { - /*<>*/ if(48 <= _ae_){ + /*<>*/ if(48 <= _ae_){ if(58 <= _ae_) break b; } else if(45 !== _ae_) break b; - /*<>*/ _ae_ = + /*<>*/ _ae_ = parse_integer(str_ind_1, end_ind); var - width = /*<>*/ _ae_[2], + width = /*<>*/ _ae_[2], str_ind_2 = _ae_[1], str_ind_3 = - /*<>*/ parse_spaces + /*<>*/ parse_spaces (str_ind_2, end_ind), _ae_ = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind_3) - 45 | 0; - /*<>*/ if(12 < _ae_ >>> 0){ + /*<>*/ if(12 < _ae_ >>> 0){ if(17 === _ae_){ var s = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, str, str_ind$0 - 2 | 0, (str_ind_3 - str_ind$0 | 0) + 3 | 0), - _ae_ = /*<>*/ str_ind_3 + 1 | 0, + _ae_ = /*<>*/ str_ind_3 + 1 | 0, formatting_lit$0 = [0, s, width, 0], next_ind = _ae_; break a; } } else if(1 < _ae_ - 1 >>> 0){ - /*<>*/ _ae_ = + /*<>*/ _ae_ = parse_integer(str_ind_3, end_ind); var - offset = /*<>*/ _ae_[2], + offset = /*<>*/ _ae_[2], str_ind_4 = _ae_[1], str_ind_5 = - /*<>*/ parse_spaces + /*<>*/ parse_spaces (str_ind_4, end_ind); - /*<>*/ if + /*<>*/ if (62 !== caml_string_get(str, str_ind_5)) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var s$0 = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, str, str_ind$0 - 2 | 0, (str_ind_5 - str_ind$0 | 0) + 3 | 0), - _ae_ = /*<>*/ str_ind_5 + 1 | 0, + _ae_ = /*<>*/ str_ind_5 + 1 | 0, formatting_lit$0 = [0, s$0, width, offset], next_ind = _ae_; break a; } - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); } - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); } catch(exn$0){ @@ -20666,132 +22047,132 @@ } var fmt_rest$10 = - /*<>*/ parse(next_ind, end_ind) + /*<>*/ parse(next_ind, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, formatting_lit$0, fmt_rest$10]]; case 28: var - str_ind$1 = /*<>*/ str_ind + 1 | 0; - /*<>*/ try{ + str_ind$1 = /*<>*/ str_ind + 1 | 0; + /*<>*/ try{ var str_ind_1$0 = - /*<>*/ parse_spaces + /*<>*/ parse_spaces (str_ind$1, end_ind), _ae_ = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind_1$0); a: { b: { - /*<>*/ if(48 <= _ae_){ + /*<>*/ if(48 <= _ae_){ if(58 <= _ae_) break b; } else if(45 !== _ae_) break b; - /*<>*/ _ae_ = + /*<>*/ _ae_ = parse_integer(str_ind_1$0, end_ind); var - size = /*<>*/ _ae_[2], + size = /*<>*/ _ae_[2], str_ind_2$0 = _ae_[1], str_ind_3$0 = - /*<>*/ parse_spaces + /*<>*/ parse_spaces (str_ind_2$0, end_ind); - /*<>*/ if + /*<>*/ if (62 !== caml_string_get(str, str_ind_3$0)) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var s$1 = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, str, str_ind$1 - 2 | 0, (str_ind_3$0 - str_ind$1 | 0) + 3 | 0), _ae_ = - /*<>*/ [0, + /*<>*/ [0, [0, str_ind_3$0 + 1 | 0, [1, s$1, size]]]; break a; } - /*<>*/ _ae_ = 0; + /*<>*/ _ae_ = 0; } } catch(exn){ var exn$0 = /*<>*/ caml_wrap_exception(exn); if(exn$0 !== Stdlib[8] && exn$0[1] !== Stdlib[7]) throw caml_maybe_attach_backtrace(exn$0, 0); - /*<>*/ _ae_ = 0; + /*<>*/ _ae_ = 0; } - /*<>*/ if(_ae_){ + /*<>*/ if(_ae_){ _ae_ = _ae_[1]; var formatting_lit$1 = _ae_[2], next_ind$0 = _ae_[1], fmt_rest$11 = - /*<>*/ parse + /*<>*/ parse (next_ind$0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, formatting_lit$1, fmt_rest$11]]; } var fmt_rest$12 = - /*<>*/ parse(str_ind$1, end_ind) + /*<>*/ parse(str_ind$1, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, _U_, fmt_rest$12]]; case 31: var fmt_rest$8 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, 2, fmt_rest$8]]; case 32: var fmt_rest$9 = - /*<>*/ parse + /*<>*/ parse (str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, + /*<>*/ return [0, [17, 5, fmt_rest$9]]; } } var fmt_rest = - /*<>*/ parse(str_ind + 1 | 0, end_ind) + /*<>*/ parse(str_ind + 1 | 0, end_ind) [1]; - /*<>*/ return [0, [17, [2, c], fmt_rest]]; - /*<>*/ } + /*<>*/ return [0, [17, [2, c], fmt_rest]]; + /*<>*/ } function parse_tag(is_open_tag, str_ind, end_ind){ - /*<>*/ try{ + /*<>*/ try{ if(str_ind === end_ind) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - /*<>*/ if + /*<>*/ if (60 !== caml_string_get(str, str_ind)) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var ind = - /*<>*/ Stdlib_String[32].call + /*<>*/ Stdlib_String[53].call (null, str, str_ind + 1 | 0, 62); - /*<>*/ if(end_ind <= ind) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(end_ind <= ind) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var sub_str = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, str, str_ind, (ind - str_ind | 0) + 1 | 0), fmt_rest$0 = - /*<>*/ parse(ind + 1 | 0, end_ind)[1], + /*<>*/ parse(ind + 1 | 0, end_ind)[1], sub_fmt = - /*<>*/ parse(str_ind, ind + 1 | 0)[1], + /*<>*/ parse(str_ind, ind + 1 | 0)[1], sub_format$0 = - /*<>*/ [0, sub_fmt, sub_str], + /*<>*/ [0, sub_fmt, sub_str], formatting$0 = - /*<>*/ is_open_tag + /*<>*/ is_open_tag ? [0, sub_format$0] : [1, sub_format$0]; return [0, [18, formatting$0, fmt_rest$0]]; @@ -20801,358 +22182,358 @@ if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0); var fmt_rest = - /*<>*/ parse(str_ind, end_ind)[1], + /*<>*/ parse(str_ind, end_ind)[1], formatting = - /*<>*/ is_open_tag + /*<>*/ is_open_tag ? [0, sub_format] : [1, sub_format]; - /*<>*/ return [0, + /*<>*/ return [0, [18, formatting, fmt_rest]]; } - /*<>*/ } + /*<>*/ } function parse_char_set(str_ind, end_ind){ - /*<>*/ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if(str_ind === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); - var char_set = /*<>*/ create_char_set(0); + var char_set = /*<>*/ create_char_set(0); function add_range(c$0, c){ - /*<>*/ if(c >= c$0){ + /*<>*/ if(c >= c$0){ var i = c$0; for(;;){ - /*<>*/ /*<>*/ add_in_char_set + /*<>*/ /*<>*/ add_in_char_set (char_set, - /*<>*/ Stdlib[29].call(null, i)); - var _ae_ = /*<>*/ i + 1 | 0; + /*<>*/ Stdlib[29].call(null, i)); + var _ae_ = /*<>*/ i + 1 | 0; if(c === i) break; i = _ae_; } } - /*<>*/ } + /*<>*/ } function fail_single_percent(str_ind){ - /*<>*/ return caml_call2 - (failwith_message(_V_), str, str_ind) /*<>*/ ; + /*<>*/ return caml_call2 + (failwith_message(_V_), str, str_ind) /*<>*/ ; } function parse_char_set_content(counter, str_ind$1, end_ind){ - var str_ind = /*<>*/ str_ind$1; + var str_ind = /*<>*/ str_ind$1; for(;;){ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var c = - /*<>*/ caml_string_get(str, str_ind); - /*<>*/ if(45 !== c){ + /*<>*/ caml_string_get(str, str_ind); + /*<>*/ if(45 !== c){ if(93 === c) - /*<>*/ return str_ind + 1 | 0; - var _ae_ = /*<>*/ str_ind + 1 | 0; + /*<>*/ return str_ind + 1 | 0; + var _ae_ = /*<>*/ str_ind + 1 | 0; return counter < 50 ? parse_char_set_after_char$0 (counter + 1 | 0, _ae_, end_ind, c) : caml_trampoline_return - (parse_char_set_after_char$0, [0, _ae_, end_ind, c]) /*<>*/ ; + (parse_char_set_after_char$0, [0, _ae_, end_ind, c]) /*<>*/ ; } - /*<>*/ add_in_char_set(char_set, 45); - var str_ind$0 = /*<>*/ str_ind + 1 | 0; + /*<>*/ add_in_char_set(char_set, 45); + var str_ind$0 = /*<>*/ str_ind + 1 | 0; str_ind = str_ind$0; } - /*<>*/ } + /*<>*/ } function parse_char_set_after_char$0(_ad_, str_ind$2, end_ind, c$3){ - var str_ind = /*<>*/ str_ind$2, c = c$3; + var str_ind = /*<>*/ str_ind$2, c = c$3; for(;;){ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var c$0 = - /*<>*/ caml_string_get(str, str_ind); + /*<>*/ caml_string_get(str, str_ind); a: { - /*<>*/ if(46 <= c$0){ + /*<>*/ if(46 <= c$0){ if(64 !== c$0){ if(93 !== c$0) break a; - /*<>*/ add_in_char_set(char_set, c); - /*<>*/ return str_ind + 1 | 0; + /*<>*/ add_in_char_set(char_set, c); + /*<>*/ return str_ind + 1 | 0; } } else if(37 !== c$0){ - /*<>*/ if(45 <= c$0) break; + /*<>*/ if(45 <= c$0) break; break a; } - /*<>*/ if(37 === c){ - /*<>*/ add_in_char_set(char_set, c$0); - var _ae_ = /*<>*/ str_ind + 1 | 0; + /*<>*/ if(37 === c){ + /*<>*/ add_in_char_set(char_set, c$0); + var _ae_ = /*<>*/ str_ind + 1 | 0; return _ad_ < 50 ? parse_char_set_content(_ad_ + 1 | 0, _ae_, end_ind) : caml_trampoline_return - (parse_char_set_content, [0, _ae_, end_ind]) /*<>*/ ; + (parse_char_set_content, [0, _ae_, end_ind]) /*<>*/ ; } } - /*<>*/ if(37 === c) - /*<>*/ fail_single_percent(str_ind); - /*<>*/ add_in_char_set(char_set, c); - var str_ind$0 = /*<>*/ str_ind + 1 | 0; + /*<>*/ if(37 === c) + /*<>*/ fail_single_percent(str_ind); + /*<>*/ add_in_char_set(char_set, c); + var str_ind$0 = /*<>*/ str_ind + 1 | 0; str_ind = str_ind$0; c = c$0; } - var str_ind$1 = /*<>*/ str_ind + 1 | 0; - /*<>*/ if(str_ind$1 === end_ind) - /*<>*/ invalid_format_message + var str_ind$1 = /*<>*/ str_ind + 1 | 0; + /*<>*/ if(str_ind$1 === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var c$1 = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind$1); - /*<>*/ if(37 === c$1){ - /*<>*/ if + /*<>*/ if(37 === c$1){ + /*<>*/ if ((str_ind$1 + 1 | 0) === end_ind) - /*<>*/ invalid_format_message + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var c$2 = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind$1 + 1 | 0); - /*<>*/ if(37 !== c$2 && 64 !== c$2) - /*<>*/ return fail_single_percent - (str_ind$1) /*<>*/ ; - /*<>*/ add_range(c, c$2); - /*<>*/ _ad_ = str_ind$1 + 2 | 0; + /*<>*/ if(37 !== c$2 && 64 !== c$2) + /*<>*/ return fail_single_percent + (str_ind$1) /*<>*/ ; + /*<>*/ add_range(c, c$2); + /*<>*/ _ad_ = str_ind$1 + 2 | 0; return _ad_ < 50 ? parse_char_set_content(_ad_ + 1 | 0, _ad_, end_ind) : caml_trampoline_return - (parse_char_set_content, [0, _ad_, end_ind]) /*<>*/ ; + (parse_char_set_content, [0, _ad_, end_ind]) /*<>*/ ; } - /*<>*/ if(93 === c$1){ - /*<>*/ add_in_char_set(char_set, c); + /*<>*/ if(93 === c$1){ + /*<>*/ add_in_char_set(char_set, c); add_in_char_set(char_set, 45); - /*<>*/ return str_ind$1 + 1 | 0; + /*<>*/ return str_ind$1 + 1 | 0; } - /*<>*/ add_range(c, c$1); - /*<>*/ _ad_ = str_ind$1 + 1 | 0; + /*<>*/ add_range(c, c$1); + /*<>*/ _ad_ = str_ind$1 + 1 | 0; return _ad_ < 50 ? parse_char_set_content(_ad_ + 1 | 0, _ad_, end_ind) : caml_trampoline_return - (parse_char_set_content, [0, _ad_, end_ind]) /*<>*/ ; + (parse_char_set_content, [0, _ad_, end_ind]) /*<>*/ ; } function parse_char_set_after_char(str_ind, end_ind, c){ - /*<>*/ return /*<>*/ caml_trampoline - ( /*<>*/ parse_char_set_after_char$0 - (0, str_ind, end_ind, c)) /*<>*/ ; + /*<>*/ return /*<>*/ caml_trampoline + ( /*<>*/ parse_char_set_after_char$0 + (0, str_ind, end_ind, c)) /*<>*/ ; } - /*<>*/ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if(str_ind === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); - /*<>*/ if + /*<>*/ if (94 === caml_string_get(str, str_ind)) var - str_ind$0 = /*<>*/ str_ind + 1 | 0, - reverse = /*<>*/ 1, + str_ind$0 = /*<>*/ str_ind + 1 | 0, + reverse = /*<>*/ 1, str_ind$1 = str_ind$0; else{ - /*<>*/ reverse = 0; + /*<>*/ reverse = 0; str_ind$1 = str_ind; } - /*<>*/ if(str_ind$1 === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if(str_ind$1 === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var c = - /*<>*/ caml_string_get(str, str_ind$1), + /*<>*/ caml_string_get(str, str_ind$1), next_ind = - /*<>*/ parse_char_set_after_char + /*<>*/ parse_char_set_after_char (str_ind$1 + 1 | 0, end_ind, c), char_set$0 = - /*<>*/ freeze_char_set(char_set), + /*<>*/ freeze_char_set(char_set), _ad_ = - /*<>*/ reverse - ? /*<>*/ rev_char_set(char_set$0) + /*<>*/ reverse + ? /*<>*/ rev_char_set(char_set$0) : char_set$0; - /*<>*/ return [0, next_ind, _ad_]; - /*<>*/ } + /*<>*/ return [0, next_ind, _ad_]; + /*<>*/ } function parse_spaces(str_ind$1, end_ind){ - var str_ind = /*<>*/ str_ind$1; + var str_ind = /*<>*/ str_ind$1; for(;;){ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); - /*<>*/ if + /*<>*/ if (32 !== caml_string_get(str, str_ind)) - /*<>*/ return str_ind; - var str_ind$0 = /*<>*/ str_ind + 1 | 0; + /*<>*/ return str_ind; + var str_ind$0 = /*<>*/ str_ind + 1 | 0; str_ind = str_ind$0; } - /*<>*/ } + /*<>*/ } function parse_positive(str_ind$1, end_ind, acc$0){ var - str_ind = /*<>*/ str_ind$1, + str_ind = /*<>*/ str_ind$1, acc = acc$0; for(;;){ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var c = - /*<>*/ caml_string_get(str, str_ind); - /*<>*/ if(9 < c - 48 >>> 0) - /*<>*/ return [0, str_ind, acc]; + /*<>*/ caml_string_get(str, str_ind); + /*<>*/ if(9 < c - 48 >>> 0) + /*<>*/ return [0, str_ind, acc]; var new_acc = - /*<>*/ (acc * 10 | 0) + (c - 48 | 0) + /*<>*/ (acc * 10 | 0) + (c - 48 | 0) | 0; - /*<>*/ if(Stdlib_Sys[13] < new_acc){ - var _ad_ = /*<>*/ Stdlib_Sys[13]; - return caml_call3(failwith_message(_W_), str, new_acc, _ad_) /*<>*/ ; + /*<>*/ if(Stdlib_Sys[14] < new_acc){ + var _ad_ = /*<>*/ Stdlib_Sys[14]; + return caml_call3(failwith_message(_W_), str, new_acc, _ad_) /*<>*/ ; } - var str_ind$0 = /*<>*/ str_ind + 1 | 0; + var str_ind$0 = /*<>*/ str_ind + 1 | 0; str_ind = str_ind$0; acc = new_acc; } - /*<>*/ } + /*<>*/ } function parse_integer(str_ind, end_ind){ - /*<>*/ if(str_ind === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if(str_ind === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var _ad_ = - /*<>*/ caml_string_get(str, str_ind); - /*<>*/ if(48 <= _ad_){ + /*<>*/ caml_string_get(str, str_ind); + /*<>*/ if(48 <= _ad_){ if(58 > _ad_) - /*<>*/ return parse_positive - (str_ind, end_ind, 0) /*<>*/ ; + /*<>*/ return parse_positive + (str_ind, end_ind, 0) /*<>*/ ; } else if(45 === _ad_){ - /*<>*/ if((str_ind + 1 | 0) === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if((str_ind + 1 | 0) === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); var c = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind + 1 | 0); - /*<>*/ if(9 < c - 48 >>> 0) - /*<>*/ return expected_character - (str_ind + 1 | 0, "digit", c) /*<>*/ ; - /*<>*/ _ad_ = + /*<>*/ if(9 < c - 48 >>> 0) + /*<>*/ return expected_character + (str_ind + 1 | 0, "digit", c) /*<>*/ ; + /*<>*/ _ad_ = parse_positive(str_ind + 1 | 0, end_ind, 0); var - n = /*<>*/ _ad_[2], + n = /*<>*/ _ad_[2], next_ind = _ad_[1]; - /*<>*/ return [0, next_ind, - n | 0]; + /*<>*/ return [0, next_ind, - n | 0]; } - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, _X_], 1); - /*<>*/ } + /*<>*/ } function add_literal(lit_start, str_ind, fmt){ var - size = /*<>*/ str_ind - lit_start | 0; + size = /*<>*/ str_ind - lit_start | 0; return 0 === size ? [0, fmt] : 1 === size ? [0, [12, - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, lit_start), fmt]] : [0, [11, - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, str, lit_start, size), - fmt]] /*<>*/ ; + fmt]] /*<>*/ ; } function search_subformat_end(str_ind$7, end_ind, c){ - var str_ind = /*<>*/ str_ind$7; + var str_ind = /*<>*/ str_ind$7; for(;;){ if(str_ind === end_ind) - /*<>*/ caml_call3 + /*<>*/ caml_call3 (failwith_message(_Y_), str, c, end_ind); - /*<>*/ if + /*<>*/ if (37 === caml_string_get(str, str_ind)){ - /*<>*/ if((str_ind + 1 | 0) === end_ind) - /*<>*/ invalid_format_message + /*<>*/ if((str_ind + 1 | 0) === end_ind) + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); - /*<>*/ if + /*<>*/ if (caml_string_get(str, str_ind + 1 | 0) === c) - /*<>*/ return str_ind; + /*<>*/ return str_ind; var _ad_ = - /*<>*/ caml_string_get + /*<>*/ caml_string_get (str, str_ind + 1 | 0); - /*<>*/ if(95 <= _ad_){ + /*<>*/ if(95 <= _ad_){ if(123 <= _ad_){ if(126 > _ad_) switch(_ad_ - 123 | 0){ case 0: var sub_end = - /*<>*/ search_subformat_end + /*<>*/ search_subformat_end (str_ind + 2 | 0, end_ind, 125), str_ind$1 = - /*<>*/ sub_end + 2 | 0; + /*<>*/ sub_end + 2 | 0; str_ind = str_ind$1; continue; case 2: - /*<>*/ return expected_character - (str_ind + 1 | 0, "character ')'", 125) /*<>*/ ; + /*<>*/ return expected_character + (str_ind + 1 | 0, "character ')'", 125) /*<>*/ ; } } else if(96 > _ad_){ - /*<>*/ if + /*<>*/ if ((str_ind + 2 | 0) === end_ind) - /*<>*/ invalid_format_message + /*<>*/ invalid_format_message (end_ind, cst_unexpected_end_of_format); - /*<>*/ _ad_ = + /*<>*/ _ad_ = caml_string_get(str, str_ind + 2 | 0); - /*<>*/ if(40 === _ad_){ + /*<>*/ if(40 === _ad_){ var sub_end$0 = - /*<>*/ search_subformat_end + /*<>*/ search_subformat_end (str_ind + 3 | 0, end_ind, 41), str_ind$2 = - /*<>*/ sub_end$0 + 2 | 0; + /*<>*/ sub_end$0 + 2 | 0; str_ind = str_ind$2; continue; } - /*<>*/ if(123 === _ad_){ + /*<>*/ if(123 === _ad_){ var sub_end$1 = - /*<>*/ search_subformat_end + /*<>*/ search_subformat_end (str_ind + 3 | 0, end_ind, 125), str_ind$3 = - /*<>*/ sub_end$1 + 2 | 0; + /*<>*/ sub_end$1 + 2 | 0; str_ind = str_ind$3; continue; } var - str_ind$4 = /*<>*/ str_ind + 3 | 0; + str_ind$4 = /*<>*/ str_ind + 3 | 0; str_ind = str_ind$4; continue; } } else{ - /*<>*/ if(40 === _ad_){ + /*<>*/ if(40 === _ad_){ var sub_end$2 = - /*<>*/ search_subformat_end + /*<>*/ search_subformat_end (str_ind + 2 | 0, end_ind, 41), - str_ind$5 = /*<>*/ sub_end$2 + 2 | 0; + str_ind$5 = /*<>*/ sub_end$2 + 2 | 0; str_ind = str_ind$5; continue; } - /*<>*/ if(41 === _ad_) - /*<>*/ return expected_character - (str_ind + 1 | 0, "character '}'", 41) /*<>*/ ; + /*<>*/ if(41 === _ad_) + /*<>*/ return expected_character + (str_ind + 1 | 0, "character '}'", 41) /*<>*/ ; } - var str_ind$0 = /*<>*/ str_ind + 2 | 0; + var str_ind$0 = /*<>*/ str_ind + 2 | 0; str_ind = str_ind$0; } else{ - var str_ind$6 = /*<>*/ str_ind + 1 | 0; + var str_ind$6 = /*<>*/ str_ind + 1 | 0; str_ind = str_ind$6; } } - /*<>*/ } + /*<>*/ } function compute_int_conv(pct_ind, str_ind, plus$0, hash$0, space$0, symb){ var - plus = /*<>*/ plus$0, + plus = /*<>*/ plus$0, hash = hash$0, space = space$0; for(;;){ @@ -21161,115 +22542,115 @@ if(plus){ if(! hash){ if(space) break a; - if(100 === symb) /*<>*/ return 1; - /*<>*/ if(105 === symb) - /*<>*/ return 4; + if(100 === symb) /*<>*/ return 1; + /*<>*/ if(105 === symb) + /*<>*/ return 4; break a; } } else{ - /*<>*/ if(! hash){ + /*<>*/ if(! hash){ if(space){ - if(100 === symb) /*<>*/ return 2; - /*<>*/ if(105 === symb) - /*<>*/ return 5; + if(100 === symb) /*<>*/ return 2; + /*<>*/ if(105 === symb) + /*<>*/ return 5; break a; } - var _ad_ = /*<>*/ symb - 88 | 0; + var _ad_ = /*<>*/ symb - 88 | 0; if(32 < _ad_ >>> 0) break a; switch(_ad_){ case 0: - /*<>*/ return 8; + /*<>*/ return 8; case 12: - /*<>*/ return 0; + /*<>*/ return 0; case 17: - /*<>*/ return 3; + /*<>*/ return 3; case 23: - /*<>*/ return 10; + /*<>*/ return 10; case 29: - /*<>*/ return 12; + /*<>*/ return 12; case 32: - /*<>*/ return 6; + /*<>*/ return 6; default: break a; } } - /*<>*/ if(! space){ + /*<>*/ if(! space){ _ad_ = symb - 88 | 0; if(32 >= _ad_ >>> 0) switch(_ad_){ case 0: - /*<>*/ return 9; + /*<>*/ return 9; case 12: - /*<>*/ return 13; + /*<>*/ return 13; case 17: - /*<>*/ return 14; + /*<>*/ return 14; case 23: - /*<>*/ return 11; + /*<>*/ return 11; case 29: - /*<>*/ return 15; + /*<>*/ return 15; case 32: - /*<>*/ return 7; + /*<>*/ return 7; } } } - /*<>*/ _ad_ = symb - 88 | 0; + /*<>*/ _ad_ = symb - 88 | 0; if(32 >= _ad_ >>> 0) switch(_ad_){ case 0: - /*<>*/ if(legacy_behavior$0) - /*<>*/ return 9; + /*<>*/ if(legacy_behavior$0) + /*<>*/ return 9; break; case 23: - /*<>*/ if(legacy_behavior$0) - /*<>*/ return 11; + /*<>*/ if(legacy_behavior$0) + /*<>*/ return 11; break; case 32: - /*<>*/ if(legacy_behavior$0) - /*<>*/ return 7; + /*<>*/ if(legacy_behavior$0) + /*<>*/ return 7; break; case 12: case 17: case 29: - /*<>*/ if(! legacy_behavior$0) - /*<>*/ return incompatible_flag - (pct_ind, str_ind, symb, cst$0) /*<>*/ ; - /*<>*/ hash = 0; + /*<>*/ if(! legacy_behavior$0) + /*<>*/ return incompatible_flag + (pct_ind, str_ind, symb, cst$0) /*<>*/ ; + /*<>*/ hash = 0; continue; } } - /*<>*/ if(plus) + /*<>*/ if(plus) if(space){ - /*<>*/ if(! legacy_behavior$0) - /*<>*/ return incompatible_flag - (pct_ind, str_ind, 32, cst) /*<>*/ ; - /*<>*/ space = 0; + /*<>*/ if(! legacy_behavior$0) + /*<>*/ return incompatible_flag + (pct_ind, str_ind, 32, cst) /*<>*/ ; + /*<>*/ space = 0; } else{ - /*<>*/ if(! legacy_behavior$0) - /*<>*/ return incompatible_flag - (pct_ind, str_ind, symb, cst) /*<>*/ ; - /*<>*/ plus = 0; + /*<>*/ if(! legacy_behavior$0) + /*<>*/ return incompatible_flag + (pct_ind, str_ind, symb, cst) /*<>*/ ; + /*<>*/ plus = 0; } else{ - /*<>*/ if(! space) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(! space) + /*<>*/ throw caml_maybe_attach_backtrace ([0, Assert_failure, ___], 1); - /*<>*/ if(! legacy_behavior$0) - /*<>*/ return incompatible_flag - (pct_ind, str_ind, symb, cst$1) /*<>*/ ; - /*<>*/ space = 0; + /*<>*/ if(! legacy_behavior$0) + /*<>*/ return incompatible_flag + (pct_ind, str_ind, symb, cst$1) /*<>*/ ; + /*<>*/ space = 0; } } - /*<>*/ } + /*<>*/ } function incompatible_flag(pct_ind, str_ind, symb, option){ var subfmt = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, str, pct_ind, str_ind - pct_ind | 0); - /*<>*/ return caml_call5 - (failwith_message(_aa_), str, pct_ind, option, symb, subfmt) /*<>*/ ; + /*<>*/ return caml_call5 + (failwith_message(_aa_), str, pct_ind, option, symb, subfmt) /*<>*/ ; } - /*<>*/ return parse + /*<>*/ return parse (0, caml_ml_string_length(str)); } var @@ -21279,11 +22660,11 @@ _ab_ = [0, [11, _c_, [3, 0, [11, _d_, [3, 0, 0]]]], _b_]; function format_of_string_fmtty(str, fmtty){ var - fmt = /*<>*/ fmt_ebb_of_string(0, str)[1]; - /*<>*/ try{ + fmt = /*<>*/ fmt_ebb_of_string(0, str)[1]; + /*<>*/ try{ var _ad_ = - /*<>*/ [0, + /*<>*/ [0, type_format(fmt, fmtty), str]; return _ad_; @@ -21291,34 +22672,34 @@ catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn !== Type_mismatch) throw caml_maybe_attach_backtrace(exn, 0); - /*<>*/ _ad_ = string_of_fmtty(fmtty); - /*<>*/ return caml_call2 + /*<>*/ _ad_ = string_of_fmtty(fmtty); + /*<>*/ return caml_call2 (failwith_message(_ab_), str, _ad_); } } var _ac_ = /*<>*/ [0, [11, _c_, [3, 0, [11, _d_, [3, 0, 0]]]], _b_]; function format_of_string_format(str, _ad_){ var - str$0 = /*<>*/ _ad_[2], + str$0 = /*<>*/ _ad_[2], fmt = _ad_[1], fmt$0 = - /*<>*/ fmt_ebb_of_string(0, str)[1]; - /*<>*/ try{ - /*<>*/ _ad_ = + /*<>*/ fmt_ebb_of_string(0, str)[1]; + /*<>*/ try{ + /*<>*/ _ad_ = [0, - /*<>*/ type_format - (fmt$0, /*<>*/ fmtty_of_fmt(fmt)), + /*<>*/ type_format + (fmt$0, /*<>*/ fmtty_of_fmt(fmt)), str]; return _ad_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn === Type_mismatch) - /*<>*/ return caml_call2 - (failwith_message(_ac_), str, str$0) /*<>*/ ; + /*<>*/ return caml_call2 + (failwith_message(_ac_), str, str$0) /*<>*/ ; /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); } - /*<>*/ } + /*<>*/ } /*<>*/ runtime.caml_register_global ([0, is_in_char_set, @@ -21332,6 +22713,8 @@ output_acc, bufput_acc, strput_acc, + [0, apply, symbol], + make_lprintf, type_format, fmt_ebb_of_string, format_of_string_fmtty, @@ -21351,7 +22734,7 @@ //# unitInfo: Provides: Stdlib__Printf //# unitInfo: Requires: CamlinternalFormat, Stdlib, Stdlib__Buffer -//# shape: Stdlib__Printf:[F(2),F(1),F(1),F(1),F(2),F(2),F(2),F(3),$0=F(3),$1=F(2),F(3),$0,$1] +//# shape: Stdlib__Printf:[F(2),F(1),F(1),F(1),F(2),F(2),F(2),F(3),$0=F(3),$1=F(2),F(3),$0,N,F(3),F(3),F(2),F(2),F(2),$1] (function (globalThis){ "use strict"; @@ -21398,19 +22781,19 @@ } function fprintf(oc, fmt){ /*<>*/ return kfprintf - (function(_a_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; + (function(_c_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; } function bprintf(b, fmt){ /*<>*/ return kbprintf - (function(_a_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; + (function(_c_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; } function ifprintf(oc, fmt){ /*<>*/ return ikfprintf - (function(_a_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; + (function(_c_){ /*<>*/ return 0;}, oc, fmt) /*<>*/ ; } function ibprintf(b, fmt){ /*<>*/ return ikfprintf - (function(_a_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; + (function(_c_){ /*<>*/ return 0;}, b, fmt) /*<>*/ ; } function printf(fmt){ /*<>*/ return fprintf(Stdlib[39], fmt) /*<>*/ ; @@ -21436,28 +22819,73 @@ /*<>*/ }, fmt) /*<>*/ ; } - /*<>*/ runtime.caml_register_global - ([0, - fprintf, - printf, - eprintf, - sprintf, - bprintf, - ifprintf, - ibprintf, - kfprintf, - ikfprintf, - ksprintf, - kbprintf, - ikfprintf, - ksprintf], - "Stdlib__Printf"); + function lfprintf(oc, param, args){ + var + fmt = /*<>*/ param[1], + _b_ = /*<>*/ CamlinternalFormat[9]; + /*<>*/ return CamlinternalFormat[13].call + (null, + function(_c_){ /*<>*/ return _b_(oc, _c_);}, + 0, + fmt, + args) /*<>*/ ; + } + function lbprintf(b, param, args){ + var + fmt = /*<>*/ param[1], + _a_ = /*<>*/ CamlinternalFormat[10]; + /*<>*/ return CamlinternalFormat[13].call + (null, + function(_b_){ /*<>*/ return _a_(b, _b_);}, + 0, + fmt, + args) /*<>*/ ; + } + function lprintf(fmt, args){ + /*<>*/ return lfprintf(Stdlib[39], fmt, args) /*<>*/ ; + } + function leprintf(fmt, args){ + /*<>*/ return lfprintf(Stdlib[40], fmt, args) /*<>*/ ; + } + function lsprintf(param, args){ + var fmt = /*<>*/ param[1]; + function k(acc){ + var buf = /*<>*/ Stdlib_Buffer[1].call(null, 64); + /*<>*/ CamlinternalFormat[11].call(null, buf, acc); + /*<>*/ return Stdlib_Buffer[2].call(null, buf) /*<>*/ ; + } + /*<>*/ return CamlinternalFormat[13].call + (null, k, 0, fmt, args) /*<>*/ ; + } + var + Stdlib_Printf = + /*<>*/ [0, + fprintf, + printf, + eprintf, + sprintf, + bprintf, + ifprintf, + ibprintf, + kfprintf, + ikfprintf, + ksprintf, + kbprintf, + ikfprintf, + CamlinternalFormat[12], + lfprintf, + lbprintf, + lprintf, + leprintf, + lsprintf, + ksprintf]; + runtime.caml_register_global(Stdlib_Printf, "Stdlib__Printf"); return; } (globalThis)); //# unitInfo: Provides: Stdlib__Arg -//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Buffer, Stdlib__Int, Stdlib__List, Stdlib__Printf, Stdlib__String, Stdlib__Sys +//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Buffer, Stdlib__Int, Stdlib__List, Stdlib__Printf, Stdlib__String //# shape: Stdlib__Arg:[F(3),F(3),F(5),F(5),F(5),F(3),N,N,F(2),F(2),F(2),N,F(1),F(1),F(2),F(2)] (function (globalThis){ @@ -21523,7 +22951,7 @@ h = l[1], _w_ = /*<>*/ Stdlib[28].call(null, prefix, h), _w_ = - /*<>*/ Stdlib_List[27].call + /*<>*/ Stdlib_List[28].call (null, function(x, y){ var _w_ = /*<>*/ Stdlib[28].call(null, sep, y); @@ -21685,7 +23113,7 @@ var _v_ = current[1], s = /*<>*/ caml_check_bound(argv[1], _v_)[_v_ + 1]; - /*<>*/ if(Stdlib_String[11].call(null, "-", s)){ + /*<>*/ if(Stdlib_String[13].call(null, "-", s)){ /*<>*/ try{ /*<>*/ _v_ = assoc3(s, speclist[1]); var follow = 0, action = _v_; @@ -21695,12 +23123,12 @@ if(exn$0 !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn$0, 0); try{ var - i = /*<>*/ Stdlib_String[36].call(null, s, 61), + i = /*<>*/ Stdlib_String[57].call(null, s, 61), len = /*<>*/ caml_ml_string_length(s), arg = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, s, i + 1 | 0, len - (i + 1 | 0) | 0), - keyword = /*<>*/ Stdlib_String[16].call(null, s, 0, i), + keyword = /*<>*/ Stdlib_String[19].call(null, s, 0, i), _v_ = /*<>*/ assoc3(keyword, speclist[1]), follow = [0, arg], action = _v_; @@ -21834,7 +23262,7 @@ symb = _v_[1], arg$5 = /*<>*/ get_arg$0(0); /*<>*/ if - (Stdlib_List[38].call(null, arg$5, symb)){ + (Stdlib_List[39].call(null, arg$5, symb)){ /*<>*/ caml_call1(f$4, arg$5); /*<>*/ return consume_arg$0(0) /*<>*/ ; } @@ -21879,7 +23307,7 @@ /*<>*/ throw caml_maybe_attach_backtrace ([0, Stdlib[6], - "Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"], + "Arg.Expand is only allowed with Arg.parse_and_expand_argv_dynamic"], 1); var arg$6 = /*<>*/ get_arg$0(0), @@ -22029,12 +23457,12 @@ } /*<>*/ } /*<>*/ try{ - var n$0 = /*<>*/ Stdlib_String[36].call(null, s, 9); + var n$0 = /*<>*/ Stdlib_String[57].call(null, s, 9); } catch(exn$1){ var exn = /*<>*/ caml_wrap_exception(exn$1); if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0); - try{var n = /*<>*/ Stdlib_String[36].call(null, s, 32);} + try{var n = /*<>*/ Stdlib_String[57].call(null, s, 32);} catch(exn){ var exn$0 = /*<>*/ caml_wrap_exception(exn); if(exn$0 === Stdlib[8]) /*<>*/ return len; @@ -22047,15 +23475,15 @@ function max_arg_len(cur, _v_){ var doc = /*<>*/ _v_[3], spec = _v_[2], kwd = _v_[1]; /*<>*/ if(11 === spec[0]) - /*<>*/ return Stdlib_Int[11].call + /*<>*/ return Stdlib_Int[15].call (null, cur, caml_ml_string_length(kwd)) /*<>*/ ; /*<>*/ _v_ = caml_ml_string_length(kwd) + /*<>*/ second_word(doc) | 0; - /*<>*/ return Stdlib_Int[11].call(null, cur, _v_) /*<>*/ ; + /*<>*/ return Stdlib_Int[15].call(null, cur, _v_) /*<>*/ ; } function replace_leading_tab(s){ var seen = /*<>*/ [0, 0]; - /*<>*/ return Stdlib_String[18].call + /*<>*/ return Stdlib_String[37].call (null, function(c){ /*<>*/ if(9 === c && ! seen[1]){ @@ -22071,9 +23499,9 @@ limit = /*<>*/ opt ? opt[1] : Stdlib[19], completed = /*<>*/ add_help(speclist), len = - /*<>*/ Stdlib_List[27].call + /*<>*/ Stdlib_List[28].call (null, max_arg_len, 0, completed), - len$0 = /*<>*/ Stdlib_Int[10].call(null, len, limit); + len$0 = /*<>*/ Stdlib_Int[14].call(null, len, limit); /*<>*/ return Stdlib_List[21].call (null, function(ksd){ @@ -22084,7 +23512,7 @@ msg$0 = ksd[3], cutcol$0 = /*<>*/ second_word(msg$0), _v_ = - /*<>*/ Stdlib_Int[11].call + /*<>*/ Stdlib_Int[15].call (null, 0, len$0 - cutcol$0 | 0) + 3 | 0, @@ -22114,11 +23542,11 @@ /*<>*/ Stdlib_String[1].call(null, diff, 32), _v_ = /*<>*/ replace_leading_tab(msg), prefix = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, _v_, 0, cutcol), suffix = /*<>*/ /*<>*/ Stdlib_String - [16].call + [19].call (null, msg, cutcol, @@ -22148,7 +23576,7 @@ ? 13 === /*<>*/ caml_string_get(word, len - 1 | 0) ? /*<>*/ Stdlib_String - [16].call + [19].call (null, word, 0, len - 1 | 0) : word : word; @@ -22768,52 +24196,318 @@ } return _u_; } - catch(exn){ /*<>*/ return 0;} - /*<>*/ } - /*<>*/ runtime.caml_register_named_value - ("Printexc.handle_uncaught_exception", handle_uncaught_exception); + catch(exn){ /*<>*/ return 0;} + /*<>*/ } + /*<>*/ runtime.caml_register_named_value + ("Printexc.handle_uncaught_exception", handle_uncaught_exception); + var + Stdlib_Printexc = + /*<>*/ [0, + to_string, + to_string_default, + print, + catch$, + print_backtrace, + get_backtrace, + runtime.caml_record_backtrace, + runtime.caml_backtrace_status, + register_printer, + use_printers, + raw_backtrace_entries, + caml_get_exception_raw_backtra, + print_raw_backtrace, + raw_backtrace_to_string, + default_uncaught_exception_han, + set_uncaught_exception_handler, + backtrace_slots, + backtrace_slots_of_raw_entry, + [0, + backtrace_slot_is_raise, + backtrace_slot_is_inline, + backtrace_slot_location, + backtrace_slot_defname, + format_backtrace_slot], + raw_backtrace_length, + runtime.caml_raw_backtrace_slot, + runtime.caml_convert_raw_backtrace_slot, + runtime.caml_raw_backtrace_next_slot, + exn_slot_id, + exn_slot_name, + string_of_extension_constructo]; + runtime.caml_register_global(Stdlib_Printexc, "Stdlib__Printexc"); + return; + /*<>*/ } + (globalThis)); + +//# unitInfo: Provides: Stdlib__Domain +//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Condition, Stdlib__List, Stdlib__Mutex +//# shape: Stdlib__Domain:[F(1),F(1),F(1)*,F(1),F(1),F(1),F(1),F(1),F(1)*,F(1),F(1),N] +(function + (globalThis){ + "use strict"; + var + runtime = globalThis.jsoo_runtime, + caml_array_make = runtime.caml_array_make, + caml_check_bound = runtime.caml_check_bound, + caml_domain_dls_get = runtime.caml_domain_dls_get, + caml_get_global = runtime.caml_get_global, + caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace, + caml_ml_domain_id = runtime.caml_ml_domain_id, + caml_wrap_exception = runtime.caml_wrap_exception; + function caml_call1(f, a0){ + return (f.l >= 0 ? f.l : f.l = f.length) === 1 + ? f(a0) + : runtime.caml_call_gen(f, [a0]); + } + var + dummy = 0, + Stdlib_Condition = caml_get_global("Stdlib__Condition"), + Stdlib_Mutex = caml_get_global("Stdlib__Mutex"), + Stdlib_Atomic = caml_get_global("Stdlib__Atomic"), + Stdlib = caml_get_global("Stdlib"), + Stdlib_Array = caml_get_global("Stdlib__Array"), + Stdlib_List = caml_get_global("Stdlib__List"), + Assert_failure = runtime.caml_get_global_predef("Assert_failure"); + function cpu_relax(param){ + /*<>*/ return runtime.caml_ml_domain_cpu_relax(0) /*<>*/ ; + } + var none = /*<>*/ [0, 0]; + function create_dls(param){ + var st = /*<>*/ caml_array_make(8, none); + /*<>*/ runtime.caml_domain_dls_set(st); + /*<>*/ } + /*<>*/ create_dls(0); + var + key_counter = /*<>*/ Stdlib_Atomic[1].call(null, 0), + parent_keys = /*<>*/ Stdlib_Atomic[1].call(null, 0); + function new_key(split_from_parent, init_orphan){ + var + idx = + /*<>*/ Stdlib_Atomic[7].call(null, key_counter, 1), + k = /*<>*/ [0, idx, init_orphan]; + /*<>*/ if(split_from_parent){ + var + split = split_from_parent[1], + ki = /*<>*/ [0, k, split]; + /*<>*/ for(;;){ + var + l = /*<>*/ Stdlib_Atomic[3].call(null, parent_keys); + /*<>*/ if + (! (1 - Stdlib_Atomic[6].call(null, parent_keys, l, [0, ki, l]))) + break; + } + } + /*<>*/ return k; + /*<>*/ } + function maybe_grow(idx){ + /*<>*/ for(;;){ + var + st = caml_domain_dls_get(0), + sz = /*<>*/ st.length - 1; + /*<>*/ if(idx < sz) + /*<>*/ return st; + var new_sz = /*<>*/ sz; + for(;;){ + /*<>*/ if(idx < new_sz){ + var new_st = /*<>*/ caml_array_make(new_sz, none); + /*<>*/ Stdlib_Array[9].call + (null, st, 0, new_st, 0, sz); + /*<>*/ if + (runtime.caml_domain_dls_compare_and_set(st, new_st)) + /*<>*/ return new_st; + break; + } + var s = /*<>*/ 2 * new_sz | 0; + new_sz = s; + } + } + /*<>*/ } + function set(param, x){ + var + idx = /*<>*/ param[1], + st = /*<>*/ maybe_grow(idx); + /*<>*/ caml_check_bound(st, idx)[idx + 1] = x; + /*<>*/ return 0; + } + var _a_ = /*<>*/ [0, "domain.ml", 187, 13]; + function get(_b_){ + var + init = /*<>*/ _b_[2], + idx = _b_[1], + st = /*<>*/ maybe_grow(idx), + oldval = /*<>*/ caml_check_bound(st, idx)[idx + 1]; + /*<>*/ if(oldval !== none) + /*<>*/ return oldval; + var + new_obj = /*<>*/ caml_call1(init, 0), + st$0 = /*<>*/ caml_domain_dls_get(0), + curval = /*<>*/ caml_check_bound(st$0, idx)[idx + 1], + _b_ = + /*<>*/ curval === oldval + ? (st$0[idx + 1] = new_obj, 1) + : 0; + /*<>*/ if(_b_) + /*<>*/ return new_obj; + var + updated_obj = + /*<>*/ caml_check_bound(st$0, idx)[idx + 1]; + /*<>*/ if(updated_obj !== none) + /*<>*/ return updated_obj; + /*<>*/ throw caml_maybe_attach_backtrace + ([0, Assert_failure, _a_], 1); + /*<>*/ } + function set_initial_keys(l){ + /*<>*/ return Stdlib_List[19].call + (null, + function(param){ + var v = /*<>*/ param[2], k = param[1]; + /*<>*/ return set(k, v) /*<>*/ ; + }, + l) /*<>*/ ; + } + function get_id(param){ + var domain = /*<>*/ param[1]; + /*<>*/ return domain; + /*<>*/ } + function self(param){ + /*<>*/ return caml_ml_domain_id(0) /*<>*/ ; + } + function is_main_domain(param){ + /*<>*/ return 0 === caml_ml_domain_id(0) ? 1 : 0 /*<>*/ ; + /*<>*/ } + var + first_domain_spawned = + /*<>*/ Stdlib_Atomic[1].call(null, 0), + first_spawn_function = + /*<>*/ [0, + function(param){ /*<>*/ }]; + function before_first_spawn(f){ + /*<>*/ if + (Stdlib_Atomic[3].call(null, first_domain_spawned)) + /*<>*/ throw caml_maybe_attach_backtrace + ([0, Stdlib[6], "first domain already spawned"], 1); + var old_f = /*<>*/ first_spawn_function[1]; + function new_f(param){ + /*<>*/ caml_call1(old_f, 0); + /*<>*/ return caml_call1(f, 0) /*<>*/ ; + } + /*<>*/ first_spawn_function[1] = new_f; + return 0; + /*<>*/ } + var + at_exit_key = + /*<>*/ new_key + (0, + function(param){ + /*<>*/ return function(param){ + /*<>*/ return 0; /*<>*/ } /*<>*/ ; + /*<>*/ }); + function at_exit(f){ + var old_exit = /*<>*/ get(at_exit_key); + function new_exit(param){ + /*<>*/ caml_call1(f, 0); + /*<>*/ return caml_call1(old_exit, 0) /*<>*/ ; + } + /*<>*/ return set(at_exit_key, new_exit) /*<>*/ ; + } + function do_at_exit(param){ + var f = /*<>*/ get(at_exit_key); + /*<>*/ return caml_call1(f, 0) /*<>*/ ; + } + /*<>*/ Stdlib[104][1] = do_at_exit; + function spawn(f){ + /*<>*/ if + (1 - Stdlib_Atomic[3].call(null, first_domain_spawned)){ + /*<>*/ Stdlib_Atomic[4].call + (null, first_domain_spawned, 1); + /*<>*/ caml_call1(first_spawn_function[1], 0); + /*<>*/ first_spawn_function[1] = + function(param){ + /*<>*/ return 0; + /*<>*/ }; + } + var + _a_ = /*<>*/ Stdlib_Atomic[3].call(null, parent_keys), + pk = + /*<>*/ Stdlib_List[21].call + (null, + function(param){ + var split = /*<>*/ param[2], k = param[1]; + /*<>*/ return [0, + k, + /*<>*/ caml_call1 + (split, /*<>*/ get(k))] /*<>*/ ; + /*<>*/ }, + _a_), + _a_ = /*<>*/ Stdlib_Condition[1].call(null, 0), + term_sync = + /*<>*/ [0, 0, Stdlib_Mutex[1].call(null, 0), _a_]; + function body(param){ + /*<>*/ try{ + /*<>*/ create_dls(0); + /*<>*/ set_initial_keys(pk); + var res = /*<>*/ caml_call1(f, 0); + } + catch(exn$0){ + var exn = /*<>*/ caml_wrap_exception(exn$0); + try{ /*<>*/ do_at_exit(0);}catch(exn){} + /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); + } + /*<>*/ do_at_exit(0); + /*<>*/ return res; + /*<>*/ } + var + domain = + /*<>*/ runtime.caml_domain_spawn(body, term_sync); + /*<>*/ return [0, domain, term_sync]; + /*<>*/ } + function join(_a_){ + var term_sync = /*<>*/ _a_[2]; + function loop(_a_){ + /*<>*/ for(;;){ + _a_ = term_sync[1]; + if(_a_){var res = _a_[1]; /*<>*/ return res;} + /*<>*/ Stdlib_Condition[2].call + (null, term_sync[3], term_sync[2]); + } + /*<>*/ } + var + _a_ = + /*<>*/ Stdlib_Mutex[5].call(null, term_sync[2], loop); + /*<>*/ if(0 === _a_[0]){ + var x = _a_[1]; + /*<>*/ return x; + } + /*<>*/ _a_ = _a_[1]; + var bt = _a_[2], ex = _a_[1]; + /*<>*/ runtime.caml_restore_raw_backtrace(ex, bt); + throw caml_maybe_attach_backtrace(ex, 0); + /*<>*/ } var - Stdlib_Printexc = - /*<>*/ [0, - to_string, - to_string_default, - print, - catch$, - print_backtrace, - get_backtrace, - runtime.caml_record_backtrace, - runtime.caml_backtrace_status, - register_printer, - use_printers, - raw_backtrace_entries, - caml_get_exception_raw_backtra, - print_raw_backtrace, - raw_backtrace_to_string, - default_uncaught_exception_han, - set_uncaught_exception_handler, - backtrace_slots, - backtrace_slots_of_raw_entry, - [0, - backtrace_slot_is_raise, - backtrace_slot_is_inline, - backtrace_slot_location, - backtrace_slot_defname, - format_backtrace_slot], - raw_backtrace_length, - runtime.caml_raw_backtrace_slot, - runtime.caml_convert_raw_backtrace_slot, - runtime.caml_raw_backtrace_next_slot, - exn_slot_id, - exn_slot_name, - string_of_extension_constructo]; - runtime.caml_register_global(Stdlib_Printexc, "Stdlib__Printexc"); + count = /*<>*/ runtime.caml_domain_count, + recommended_domain_count = runtime.caml_recommended_domain_count, + Stdlib_Domain = + [0, + spawn, + join, + get_id, + self, + before_first_spawn, + at_exit, + cpu_relax, + is_main_domain, + count, + recommended_domain_count, + runtime.caml_ml_domain_index, + [0, new_key, get, set]]; + runtime.caml_register_global(Stdlib_Domain, "Stdlib__Domain"); return; /*<>*/ } (globalThis)); //# unitInfo: Provides: Stdlib__Fun //# unitInfo: Requires: Stdlib, Stdlib__Printexc -//# shape: Stdlib__Fun:[F(2)*,F(3),F(3),F(2),F(2),N] +//# shape: Stdlib__Fun:[F(1)*,F(2)*,F(3),F(3),F(2),F(2),N] (function (globalThis){ "use strict"; @@ -22836,6 +24530,7 @@ var Stdlib_Printexc = caml_get_global("Stdlib__Printexc"), Stdlib = caml_get_global("Stdlib"); + function id(x){ /*<>*/ return x; /*<>*/ } function const$(c, param){ /*<>*/ return c; /*<>*/ } @@ -22896,7 +24591,7 @@ /*<>*/ return result; /*<>*/ } /*<>*/ runtime.caml_register_global - ([0, const$, compose, flip, negate, protect, Finally_raised], + ([0, id, const$, compose, flip, negate, protect, Finally_raised], "Stdlib__Fun"); return; /*<>*/ } @@ -22904,7 +24599,7 @@ //# unitInfo: Provides: Stdlib__Gc //# unitInfo: Requires: Stdlib, Stdlib__Atomic, Stdlib__Domain, Stdlib__Fun, Stdlib__Printf, Stdlib__Sys -//# shape: Stdlib__Gc:[F(1),F(1),F(2)*,F(2),F(1)*,F(1),F(1),F(1)*,F(1)*,N] +//# shape: Stdlib__Gc:[F(1),F(1),F(2)*,F(2),F(1)*,F(1),F(1),F(1)*,F(1)*,N,N] (function (globalThis){ "use strict"; @@ -22930,10 +24625,10 @@ Stdlib_Sys = caml_get_global("Stdlib__Sys"), Stdlib_Printf = caml_get_global("Stdlib__Printf"); function eventlog_pause(param){ - /*<>*/ return 0; - /*<>*/ } - function eventlog_resume(param){ /*<>*/ return 0; - /*<>*/ } + /*<>*/ return 0; + /*<>*/ } + function eventlog_resume(param){ /*<>*/ return 0; + /*<>*/ } var cst = /*<>*/ "\n", _a_ = @@ -23007,95 +24702,95 @@ "heap_chunks: %d\n"]; function print_stat(c){ var - st = /*<>*/ runtime.caml_gc_stat(0), - _v_ = /*<>*/ st[4]; + st = /*<>*/ runtime.caml_gc_stat(0), + _v_ = /*<>*/ st[4]; caml_call1(Stdlib_Printf[1].call(null, c, _a_), _v_); - /*<>*/ _v_ = st[5]; + /*<>*/ _v_ = st[5]; caml_call1(Stdlib_Printf[1].call(null, c, _b_), _v_); - /*<>*/ _v_ = st[14]; + /*<>*/ _v_ = st[14]; caml_call1(Stdlib_Printf[1].call(null, c, _c_), _v_); - /*<>*/ _v_ = st[17]; + /*<>*/ _v_ = st[17]; caml_call1(Stdlib_Printf[1].call(null, c, _d_), _v_); - /*<>*/ Stdlib_Printf[1].call(null, c, _e_); - /*<>*/ _v_ = st[1]; + /*<>*/ Stdlib_Printf[1].call(null, c, _e_); + /*<>*/ _v_ = st[1]; var l1 = - /*<>*/ caml_ml_string_length - ( /*<>*/ caml_call1 + /*<>*/ caml_ml_string_length + ( /*<>*/ caml_call1 (Stdlib_Printf[4].call(null, _f_), _v_)), - _v_ = /*<>*/ st[1]; + _v_ = /*<>*/ st[1]; caml_call2(Stdlib_Printf[1].call(null, c, _g_), l1, _v_); - /*<>*/ _v_ = st[2]; + /*<>*/ _v_ = st[2]; caml_call2(Stdlib_Printf[1].call(null, c, _h_), l1, _v_); - /*<>*/ _v_ = st[3]; + /*<>*/ _v_ = st[3]; caml_call2(Stdlib_Printf[1].call(null, c, _i_), l1, _v_); - /*<>*/ Stdlib_Printf[1].call(null, c, _j_); - /*<>*/ _v_ = st[15]; + /*<>*/ Stdlib_Printf[1].call(null, c, _j_); + /*<>*/ _v_ = st[15]; var l2 = - /*<>*/ caml_ml_string_length - ( /*<>*/ caml_call1 + /*<>*/ caml_ml_string_length + ( /*<>*/ caml_call1 (Stdlib_Printf[4].call(null, _k_), _v_)), - _v_ = /*<>*/ st[15]; + _v_ = /*<>*/ st[15]; caml_call2(Stdlib_Printf[1].call(null, c, _l_), l2, _v_); - /*<>*/ _v_ = st[6]; + /*<>*/ _v_ = st[6]; caml_call2(Stdlib_Printf[1].call(null, c, _m_), l2, _v_); - /*<>*/ _v_ = st[8]; + /*<>*/ _v_ = st[8]; caml_call2(Stdlib_Printf[1].call(null, c, _n_), l2, _v_); - /*<>*/ _v_ = st[10]; + /*<>*/ _v_ = st[10]; caml_call2(Stdlib_Printf[1].call(null, c, _o_), l2, _v_); - /*<>*/ _v_ = st[12]; + /*<>*/ _v_ = st[12]; caml_call2(Stdlib_Printf[1].call(null, c, _p_), l2, _v_); - /*<>*/ _v_ = st[13]; + /*<>*/ _v_ = st[13]; caml_call2(Stdlib_Printf[1].call(null, c, _q_), l2, _v_); - /*<>*/ Stdlib_Printf[1].call(null, c, _r_); - /*<>*/ _v_ = st[9]; + /*<>*/ Stdlib_Printf[1].call(null, c, _r_); + /*<>*/ _v_ = st[9]; caml_call1(Stdlib_Printf[1].call(null, c, _s_), _v_); - /*<>*/ _v_ = st[11]; + /*<>*/ _v_ = st[11]; caml_call1(Stdlib_Printf[1].call(null, c, _t_), _v_); - /*<>*/ _v_ = st[7]; - return caml_call1(Stdlib_Printf[1].call(null, c, _u_), _v_) /*<>*/ ; + /*<>*/ _v_ = st[7]; + return caml_call1(Stdlib_Printf[1].call(null, c, _u_), _v_) /*<>*/ ; } function allocated_bytes(_u_){ - /*<>*/ _u_ = runtime.caml_gc_counters(0); - var ma = /*<>*/ _u_[3], pro = _u_[2], mi = _u_[1]; - /*<>*/ return (mi + ma - pro) * (Stdlib_Sys[10] / 8 | 0); + /*<>*/ _u_ = runtime.caml_gc_counters(0); + var ma = /*<>*/ _u_[3], pro = _u_[2], mi = _u_[1]; + /*<>*/ return (mi + ma - pro) * (Stdlib_Sys[11] / 8 | 0); } function delete_alarm(a){ - /*<>*/ return Stdlib_Atomic[4].call(null, a, 0) /*<>*/ ; + /*<>*/ return Stdlib_Atomic[4].call(null, a, 0) /*<>*/ ; } function create_alarm(f){ - var alarm = /*<>*/ Stdlib_Atomic[1].call(null, 1); - /*<>*/ Stdlib_Domain[6].call + var alarm = /*<>*/ Stdlib_Atomic[1].call(null, 1); + /*<>*/ Stdlib_Domain[6].call (null, function(param){ - /*<>*/ return delete_alarm(alarm) /*<>*/ ; + /*<>*/ return delete_alarm(alarm) /*<>*/ ; }); - /*<>*/ return alarm; - /*<>*/ } + /*<>*/ return alarm; + /*<>*/ } function string_of_allocation_source(param){ - /*<>*/ switch(param){ + /*<>*/ switch(param){ case 0: - /*<>*/ return "Normal"; + /*<>*/ return "Normal"; case 1: - /*<>*/ return "Marshal"; + /*<>*/ return "Marshal"; case 2: - /*<>*/ return "Custom"; - default: /*<>*/ return "Map_file"; + /*<>*/ return "Custom"; + default: /*<>*/ return "Map_file"; } - /*<>*/ } + /*<>*/ } var null_tracker = /*<>*/ [0, - function(param){ /*<>*/ return 0; /*<>*/ }, function(param){ /*<>*/ return 0; /*<>*/ }, - function(param){ /*<>*/ return 0; /*<>*/ }, - function(param){ /*<>*/ return 0; /*<>*/ }, - function(param){ /*<>*/ return 0; /*<>*/ }]; + function(param){ /*<>*/ return 0; /*<>*/ }, + function(param){ /*<>*/ return 0; /*<>*/ }, + function(param){ /*<>*/ return 0; /*<>*/ }, + function(param){ /*<>*/ return 0; /*<>*/ }]; function start(sampling_rate, opt, tracker){ - var callstack_size = /*<>*/ opt ? opt[1] : Stdlib[19]; - /*<>*/ return runtime.caml_memprof_start - (sampling_rate, callstack_size, tracker) /*<>*/ ; + var callstack_size = /*<>*/ opt ? opt[1] : Stdlib[19]; + /*<>*/ return runtime.caml_memprof_start + (sampling_rate, callstack_size, tracker) /*<>*/ ; } var Stdlib_Gc = @@ -23113,8 +24808,13 @@ string_of_allocation_source, null_tracker, start, + runtime.caml_memprof_is_sampling, runtime.caml_memprof_stop, - runtime.caml_memprof_discard]]; + runtime.caml_memprof_discard], + [0, + runtime.caml_gc_tweak_set, + runtime.caml_gc_tweak_get, + runtime.caml_gc_tweak_list_active]]; runtime.caml_register_global(Stdlib_Gc, "Stdlib__Gc"); return; } @@ -23156,7 +24856,7 @@ open_gen = Stdlib[81]; function with_open(openfun, s, f){ var ic = /*<>*/ caml_call1(openfun, s); - /*<>*/ return Stdlib_Fun[5].call + /*<>*/ return Stdlib_Fun[6].call (null, function(param){ /*<>*/ return Stdlib[94].call(null, ic) /*<>*/ ; @@ -23312,11 +25012,11 @@ } var new_len = - /*<>*/ new_len$0 <= Stdlib_Sys[13] + /*<>*/ new_len$0 <= Stdlib_Sys[14] ? new_len$0 : ofs - < Stdlib_Sys[13] - ? Stdlib_Sys[13] + < Stdlib_Sys[14] + ? Stdlib_Sys[14] : /*<>*/ Stdlib [2].call (null, @@ -23327,7 +25027,7 @@ /*<>*/ return new_buf; /*<>*/ } function input_all(ic){ - var chunk_size = /*<>*/ Stdlib_Sys[3]; + var chunk_size = /*<>*/ Stdlib_Sys[4]; /*<>*/ try{ var _b_ = /*<>*/ Stdlib[91].call(null, ic), @@ -23345,9 +25045,9 @@ ? initial_size : chunk_size, initial_size$1 = - /*<>*/ initial_size$0 <= Stdlib_Sys[13] + /*<>*/ initial_size$0 <= Stdlib_Sys[14] ? initial_size$0 - : Stdlib_Sys[13], + : Stdlib_Sys[14], buf = /*<>*/ caml_create_bytes(initial_size$1), nread = /*<>*/ read_upto(ic, buf, 0, initial_size$1); @@ -23486,7 +25186,7 @@ open_gen = Stdlib[62]; function with_open(openfun, s, f){ var oc = /*<>*/ caml_call1(openfun, s); - /*<>*/ return Stdlib_Fun[5].call + /*<>*/ return Stdlib_Fun[6].call (null, function(param){ /*<>*/ return Stdlib[77].call(null, oc) /*<>*/ ; @@ -23670,8 +25370,8 @@ (null, "Digest.BLAKE2: wrong hash size"); var hash_length = /*<>*/ X[1], - compare = Stdlib_String[10], - equal = Stdlib_String[9], + compare = Stdlib_String[11], + equal = Stdlib_String[10], cst = /*<>*/ ""; function string(str){ /*<>*/ return caml_blake2_string @@ -23715,7 +25415,7 @@ /*<>*/ return caml_blake2_final(ctx, hash_length) /*<>*/ ; var _a_ = - /*<>*/ Stdlib_Int[10].call + /*<>*/ Stdlib_Int[14].call (null, buf_size, toread$0), n = /*<>*/ Stdlib_In_channel[16].call @@ -23783,8 +25483,8 @@ BLAKE128 = /*<>*/ BLAKE2([0, 16]), BLAKE256 = BLAKE2([0, 32]), BLAKE512 = BLAKE2([0, 64]), - compare = Stdlib_String[10], - equal = Stdlib_String[9]; + compare = Stdlib_String[11], + equal = Stdlib_String[10]; function string(str){ /*<>*/ return caml_md5_string (str, 0, caml_ml_string_length(str)) /*<>*/ ; @@ -23919,7 +25619,7 @@ /*<>*/ return 4; case 8: case 9: - return Stdlib_Sys[10] / 8 | 0; + return Stdlib_Sys[11] / 8 | 0; case 1: case 7: case 10: @@ -24569,21 +26269,21 @@ || 1 - - /*<>*/ Stdlib_String[11].call + /*<>*/ Stdlib_String[13].call (null, serialization_prefix, buf); /*<>*/ if(_o_){ /*<>*/ _o_ = Stdlib[28].call (null, "Random.State.of_binary_string: expected a format compatible with OCaml ", - Stdlib_Sys[52]); + Stdlib_Sys[53]); /*<>*/ Stdlib[2].call(null, _o_); } var - i1 = /*<>*/ Stdlib_String[66].call(null, buf, 5), - i2 = /*<>*/ Stdlib_String[66].call(null, buf, 13), - i3 = /*<>*/ Stdlib_String[66].call(null, buf, 21), - i4 = /*<>*/ Stdlib_String[66].call(null, buf, 29); + i1 = /*<>*/ Stdlib_String[94].call(null, buf, 5), + i2 = /*<>*/ Stdlib_String[94].call(null, buf, 13), + i3 = /*<>*/ Stdlib_String[94].call(null, buf, 21), + i4 = /*<>*/ Stdlib_String[94].call(null, buf, 29); /*<>*/ return mk(i1, i2, i3, i4) /*<>*/ ; } function copy(src){ @@ -24610,16 +26310,16 @@ } } /*<>*/ caml_bytes_set(b, n * 8 | 0, 1); - var d1 = /*<>*/ Stdlib_Digest[4].call(null, b); + var d1 = /*<>*/ caml_call1(Stdlib_Digest[17][5], b); /*<>*/ caml_bytes_set(b, n * 8 | 0, 2); var - d2 = /*<>*/ Stdlib_Digest[4].call(null, b), - _n_ = /*<>*/ Stdlib_String[66].call(null, d2, 8), - _m_ = /*<>*/ Stdlib_String[66].call(null, d2, 0), - _o_ = /*<>*/ Stdlib_String[66].call(null, d1, 8); + d2 = /*<>*/ caml_call1(Stdlib_Digest[17][5], b), + _n_ = /*<>*/ Stdlib_String[94].call(null, d2, 8), + _m_ = /*<>*/ Stdlib_String[94].call(null, d2, 0), + _o_ = /*<>*/ Stdlib_String[94].call(null, d1, 8); /*<>*/ return /*<>*/ set (s, - /*<>*/ Stdlib_String[66].call(null, d1, 0), + /*<>*/ Stdlib_String[94].call(null, d1, 0), _o_, _m_, _n_) /*<>*/ ; @@ -24673,7 +26373,7 @@ /*<>*/ return min + int_aux(s, span, mask) | 0 /*<>*/ ; /*<>*/ for(;;){ var - drop = /*<>*/ Stdlib_Sys[11] - nbits | 0, + drop = /*<>*/ Stdlib_Sys[12] - nbits | 0, r = /*<>*/ /*<>*/ caml_int64_to_int32 ( /*<>*/ caml_lxm_next(s)) @@ -24693,7 +26393,7 @@ /*<>*/ return int_in_range_aux (s, min, max, max_int32, 32) /*<>*/ ; /*<>*/ return int_in_range_aux - (s, min, max, Stdlib[19], Stdlib_Sys[11]) /*<>*/ ; + (s, min, max, Stdlib[19], Stdlib_Sys[12]) /*<>*/ ; } function bits32(s){ /*<>*/ return /*<>*/ caml_int64_to_int32 @@ -24705,7 +26405,7 @@ r = /*<>*/ bits32(s) >>> 1 | 0, v = /*<>*/ caml_mod(r, n); /*<>*/ if - (! caml_greaterthan(r - v | 0, (Stdlib_Int32[9] - n | 0) + 1 | 0)) + (! caml_greaterthan(r - v | 0, (Stdlib_Int32[13] - n | 0) + 1 | 0)) /*<>*/ return v; } /*<>*/ } @@ -24720,7 +26420,7 @@ (null, "Random.int32_in_range") /*<>*/ ; var span = - /*<>*/ Stdlib_Int32[6].call(null, max - min | 0); + /*<>*/ Stdlib_Int32[10].call(null, max - min | 0); /*<>*/ if(! caml_lessequal(span, Stdlib_Int32[1])) /*<>*/ return min + int32aux(s, span) | 0 /*<>*/ ; /*<>*/ for(;;){ @@ -24750,7 +26450,7 @@ caml_greaterthan (caml_int64_sub(r, v), /*<>*/ caml_int64_add - ( /*<>*/ caml_int64_sub(Stdlib_Int64[9], n), _f_))) + ( /*<>*/ caml_int64_sub(Stdlib_Int64[13], n), _f_))) /*<>*/ return v; } /*<>*/ } @@ -24765,7 +26465,7 @@ (null, "Random.int64_in_range") /*<>*/ ; var span = - /*<>*/ /*<>*/ Stdlib_Int64[6].call + /*<>*/ /*<>*/ Stdlib_Int64[10].call (null, /*<>*/ caml_int64_sub(max, min)); /*<>*/ if(! caml_lessequal(span, Stdlib_Int64[1])) /*<>*/ return /*<>*/ caml_int64_add @@ -24787,7 +26487,7 @@ _h_ = caml_int64_create_lo_mi_hi(0, 0, 0), _i_ = caml_int64_create_lo_mi_hi(0, 0, 0), nativebits = - 32 === Stdlib_Nativeint[9] + 32 === Stdlib_Nativeint[13] ? function (s){ /*<>*/ return bits32(s) /*<>*/ ; @@ -24798,7 +26498,7 @@ ( /*<>*/ caml_lxm_next(s)) /*<>*/ ; }, nativeint = - /*<>*/ 32 === Stdlib_Nativeint[9] + /*<>*/ 32 === Stdlib_Nativeint[13] ? function (s, bound){ /*<>*/ return int32(s, bound) /*<>*/ ; @@ -24810,7 +26510,7 @@ (s, /*<>*/ caml_int64_of_int32(bound))) /*<>*/ ; }, nativeint_in_range = - /*<>*/ 32 === Stdlib_Nativeint[9] + /*<>*/ 32 === Stdlib_Nativeint[13] ? function (s, min, max){ /*<>*/ return int32_in_range(s, min, max) /*<>*/ ; @@ -24851,101 +26551,101 @@ var random_key = /*<>*/ caml_call2 - (Stdlib_Domain[11][1], [0, split], mk_default); + (Stdlib_Domain[12][1], [0, split], mk_default); function bits$0(param){ /*<>*/ return /*<>*/ bits ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key)) /*<>*/ ; + (Stdlib_Domain[12][2], random_key)) /*<>*/ ; } function int$0(bound){ /*<>*/ return /*<>*/ int ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), bound) /*<>*/ ; } function full_int$0(bound){ /*<>*/ return /*<>*/ full_int ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), bound) /*<>*/ ; } function int_in_range$0(min, max){ /*<>*/ return /*<>*/ int_in_range ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), min, max) /*<>*/ ; } function int32$0(bound){ /*<>*/ return /*<>*/ int32 ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), bound) /*<>*/ ; } function int32_in_range$0(min, max){ /*<>*/ return /*<>*/ int32_in_range ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), min, max) /*<>*/ ; } function nativeint$0(bound){ /*<>*/ return /*<>*/ nativeint ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), bound) /*<>*/ ; } function nativeint_in_range$0(min, max){ /*<>*/ return /*<>*/ nativeint_in_range ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), min, max) /*<>*/ ; } function int64$0(bound){ /*<>*/ return /*<>*/ int64 ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), bound) /*<>*/ ; } function int64_in_range$0(min, max){ /*<>*/ return /*<>*/ int64_in_range ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), min, max) /*<>*/ ; } function float$0(scale){ /*<>*/ return /*<>*/ float ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), scale) /*<>*/ ; } function bool$0(param){ /*<>*/ return /*<>*/ bool ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key)) /*<>*/ ; + (Stdlib_Domain[12][2], random_key)) /*<>*/ ; } function bits32$0(param){ /*<>*/ return /*<>*/ bits32 ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key)) /*<>*/ ; + (Stdlib_Domain[12][2], random_key)) /*<>*/ ; } function bits64(param){ var s = - /*<>*/ caml_call1(Stdlib_Domain[11][2], random_key); + /*<>*/ caml_call1(Stdlib_Domain[12][2], random_key); /*<>*/ return caml_lxm_next(s) /*<>*/ ; } function nativebits$0(param){ /*<>*/ return /*<>*/ nativebits ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key)) /*<>*/ ; + (Stdlib_Domain[12][2], random_key)) /*<>*/ ; } function full_init(seed){ /*<>*/ return /*<>*/ reinit ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key), + (Stdlib_Domain[12][2], random_key), seed) /*<>*/ ; } function init(seed){ @@ -24958,17 +26658,17 @@ function split$0(param){ /*<>*/ return /*<>*/ split ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key)) /*<>*/ ; + (Stdlib_Domain[12][2], random_key)) /*<>*/ ; } function get_state(param){ /*<>*/ return /*<>*/ copy ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], random_key)) /*<>*/ ; + (Stdlib_Domain[12][2], random_key)) /*<>*/ ; } function set_state(src){ var dst = - /*<>*/ caml_call1(Stdlib_Domain[11][2], random_key); + /*<>*/ caml_call1(Stdlib_Domain[12][2], random_key); /*<>*/ return caml_ba_blit(src, dst) /*<>*/ ; } /*<>*/ runtime.caml_register_global @@ -25023,7 +26723,7 @@ //# unitInfo: Provides: Stdlib__Hashtbl //# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Domain, Stdlib__Int, Stdlib__Random, Stdlib__Seq, Stdlib__String, Stdlib__Sys -//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*] +//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*] (function (globalThis){ "use strict"; @@ -25093,7 +26793,7 @@ } var randomized_default = - /*<>*/ Stdlib_String[15].call(null, params, 82), + /*<>*/ Stdlib_String[18].call(null, params, 82), randomized = /*<>*/ Stdlib_Atomic[1].call (null, randomized_default); @@ -25107,12 +26807,12 @@ var prng_key = /*<>*/ caml_call2 - (Stdlib_Domain[11][1], 0, Stdlib_Random[19][2]); + (Stdlib_Domain[12][1], 0, Stdlib_Random[19][2]); function power_2_above(x$1, n){ var x = /*<>*/ x$1; for(;;){ if(n <= x) /*<>*/ return x; - /*<>*/ if(Stdlib_Sys[14] < (x * 2 | 0)) + /*<>*/ if(Stdlib_Sys[15] < (x * 2 | 0)) /*<>*/ return x; var x$0 = /*<>*/ x * 2 | 0; x = x$0; @@ -25127,7 +26827,7 @@ s = /*<>*/ power_2_above(16, initial_size); /*<>*/ if(random){ /*<>*/ _o_ = - caml_call1(Stdlib_Domain[11][2], prng_key); + caml_call1(Stdlib_Domain[12][2], prng_key); var seed = /*<>*/ /*<>*/ caml_call1 @@ -25255,7 +26955,7 @@ odata = /*<>*/ h[2], osize = /*<>*/ odata.length - 1, nsize = /*<>*/ osize * 2 | 0, - _l_ = /*<>*/ nsize < Stdlib_Sys[14] ? 1 : 0; + _l_ = /*<>*/ nsize < Stdlib_Sys[15] ? 1 : 0; if(! _l_) return _l_; var ndata = /*<>*/ caml_array_make(nsize, 0), @@ -25434,7 +27134,7 @@ (null, function(m, b){ var _i_ = /*<>*/ bucket_length(0, b); - /*<>*/ return Stdlib_Int[11].call(null, m, _i_); + /*<>*/ return Stdlib_Int[15].call(null, m, _i_); }, 0, h[2]), @@ -25481,240 +27181,273 @@ function to_seq_keys(m){ var _f_ = /*<>*/ to_seq(m); function _g_(_i_){ /*<>*/ return _i_[1];} - var _h_ = /*<>*/ Stdlib_Seq[30]; + var _h_ = /*<>*/ Stdlib_Seq[31]; return function(_i_){ /*<>*/ return _h_(_g_, _f_, _i_);} /*<>*/ ; } function to_seq_values(m){ var _c_ = /*<>*/ to_seq(m); function _d_(_f_){ /*<>*/ return _f_[2];} - var _e_ = /*<>*/ Stdlib_Seq[30]; + var _e_ = /*<>*/ Stdlib_Seq[31]; return function(_f_){ /*<>*/ return _e_(_d_, _c_, _f_);} /*<>*/ ; } function MakeSeeded(H){ function key_index(h, key){ - var _c_ = /*<>*/ h[2].length - 2 | 0; - return caml_call2(H[2], h[3], key) & _c_ /*<>*/ ; - /*<>*/ } + var _c_ = /*<>*/ h[2].length - 2 | 0; + return caml_call2(H[2], h[3], key) & _c_ /*<>*/ ; + /*<>*/ } function add(h, key, data){ var - i = /*<>*/ key_index(h, key), + i = /*<>*/ key_index(h, key), bucket = - /*<>*/ [0, + /*<>*/ [0, key, data, caml_check_bound(h[2], i)[i + 1]]; - /*<>*/ caml_check_bound(h[2], i)[i + 1] = bucket; - /*<>*/ h[1] = h[1] + 1 | 0; - var _c_ = /*<>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0; - return _c_ ? /*<>*/ resize(key_index, h) : _c_ /*<>*/ ; + /*<>*/ caml_check_bound(h[2], i)[i + 1] = bucket; + /*<>*/ h[1] = h[1] + 1 | 0; + var _c_ = /*<>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0; + return _c_ ? /*<>*/ resize(key_index, h) : _c_ /*<>*/ ; } - function remove(h, key){ - var - i = /*<>*/ key_index(h, key), - prec$1 = /*<>*/ caml_check_bound(h[2], i)[i + 1], - prec$0 = /*<>*/ 0, - prec = prec$1; + function remove_bucket(h, i, key, prec$0, bucket$1){ + var prec = /*<>*/ prec$0, bucket = bucket$1; for(;;){ - /*<>*/ if(! prec) - /*<>*/ return 0; - var k = /*<>*/ prec[1], next = prec[3]; - /*<>*/ if(caml_call2(H[1], k, key)){ - /*<>*/ h[1] = h[1] - 1 | 0; - /*<>*/ return prec$0 - ? (prec$0[3] = next, 0) - : ( /*<>*/ caml_check_bound - (h[2], i) - [i + 1] - = next, - 0) /*<>*/ ; + if(! bucket) /*<>*/ return bucket; + var k = /*<>*/ bucket[1], bucket$0 = bucket[3]; + /*<>*/ if(caml_call2(H[1], k, key)){ + /*<>*/ h[1] = h[1] - 1 | 0; + /*<>*/ if(prec) + /*<>*/ prec[3] = bucket$0; + else + /*<>*/ caml_check_bound(h[2], i)[i + 1] = bucket$0; + /*<>*/ return bucket; } - /*<>*/ prec$0 = prec; - prec = next; + /*<>*/ prec = bucket; + bucket = bucket$0; } - /*<>*/ } + /*<>*/ } + function find_and_remove(h, key){ + var + i = /*<>*/ key_index(h, key), + bucket = + /*<>*/ /*<>*/ remove_bucket + (h, + i, + key, + 0, + /*<>*/ caml_check_bound(h[2], i)[i + 1]); + /*<>*/ if(! bucket) + /*<>*/ return 0; + var data = /*<>*/ bucket[2]; + /*<>*/ return [0, data]; + /*<>*/ } + function remove(h, key){ + var i = /*<>*/ key_index(h, key); + /*<>*/ /*<>*/ remove_bucket + (h, + i, + key, + 0, + /*<>*/ caml_check_bound(h[2], i)[i + 1]); + /*<>*/ return 0; + } function find(h, key){ var - _c_ = /*<>*/ key_index(h, key), - _c_ = /*<>*/ caml_check_bound(h[2], _c_)[_c_ + 1]; - /*<>*/ if(! _c_) - /*<>*/ throw caml_maybe_attach_backtrace + _c_ = /*<>*/ key_index(h, key), + _c_ = /*<>*/ caml_check_bound(h[2], _c_)[_c_ + 1]; + /*<>*/ if(! _c_) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - var k1 = /*<>*/ _c_[1], d1 = _c_[2], next1 = _c_[3]; - /*<>*/ if(caml_call2(H[1], key, k1)) - /*<>*/ return d1; - /*<>*/ if(! next1) - /*<>*/ throw caml_maybe_attach_backtrace + var k1 = /*<>*/ _c_[1], d1 = _c_[2], next1 = _c_[3]; + /*<>*/ if(caml_call2(H[1], key, k1)) + /*<>*/ return d1; + /*<>*/ if(! next1) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - k2 = /*<>*/ next1[1], + k2 = /*<>*/ next1[1], d2 = next1[2], next2 = next1[3]; - /*<>*/ if(caml_call2(H[1], key, k2)) - /*<>*/ return d2; - /*<>*/ if(! next2) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(caml_call2(H[1], key, k2)) + /*<>*/ return d2; + /*<>*/ if(! next2) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - k3 = /*<>*/ next2[1], + k3 = /*<>*/ next2[1], d3 = next2[2], next3 = next2[3]; - /*<>*/ if(caml_call2(H[1], key, k3)) - /*<>*/ return d3; - /*<>*/ _c_ = next3; + /*<>*/ if(caml_call2(H[1], key, k3)) + /*<>*/ return d3; + /*<>*/ _c_ = next3; for(;;){ - /*<>*/ if(! _c_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(! _c_) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - var k = /*<>*/ _c_[1], data = _c_[2], next = _c_[3]; - /*<>*/ if(caml_call2(H[1], key, k)) - /*<>*/ return data; - /*<>*/ _c_ = next; + var k = /*<>*/ _c_[1], data = _c_[2], next = _c_[3]; + /*<>*/ if(caml_call2(H[1], key, k)) + /*<>*/ return data; + /*<>*/ _c_ = next; } - /*<>*/ } + /*<>*/ } function find_opt(h, key){ var - _c_ = /*<>*/ key_index(h, key), - _c_ = /*<>*/ caml_check_bound(h[2], _c_)[_c_ + 1]; - /*<>*/ if(! _c_) /*<>*/ return 0; - var k1 = /*<>*/ _c_[1], d1 = _c_[2], next1 = _c_[3]; - /*<>*/ if(caml_call2(H[1], key, k1)) - /*<>*/ return [0, d1]; - /*<>*/ if(! next1) - /*<>*/ return 0; + _c_ = /*<>*/ key_index(h, key), + _c_ = /*<>*/ caml_check_bound(h[2], _c_)[_c_ + 1]; + /*<>*/ if(! _c_) /*<>*/ return 0; + var k1 = /*<>*/ _c_[1], d1 = _c_[2], next1 = _c_[3]; + /*<>*/ if(caml_call2(H[1], key, k1)) + /*<>*/ return [0, d1]; + /*<>*/ if(! next1) + /*<>*/ return 0; var - k2 = /*<>*/ next1[1], + k2 = /*<>*/ next1[1], d2 = next1[2], next2 = next1[3]; - /*<>*/ if(caml_call2(H[1], key, k2)) - /*<>*/ return [0, d2]; - /*<>*/ if(! next2) - /*<>*/ return 0; + /*<>*/ if(caml_call2(H[1], key, k2)) + /*<>*/ return [0, d2]; + /*<>*/ if(! next2) + /*<>*/ return 0; var - k3 = /*<>*/ next2[1], + k3 = /*<>*/ next2[1], d3 = next2[2], next3 = next2[3]; - /*<>*/ if(caml_call2(H[1], key, k3)) - /*<>*/ return [0, d3]; - /*<>*/ _c_ = next3; + /*<>*/ if(caml_call2(H[1], key, k3)) + /*<>*/ return [0, d3]; + /*<>*/ _c_ = next3; for(;;){ - /*<>*/ if(! _c_) - /*<>*/ return 0; - var k = /*<>*/ _c_[1], data = _c_[2], next = _c_[3]; - /*<>*/ if(caml_call2(H[1], key, k)) - /*<>*/ return [0, data]; - /*<>*/ _c_ = next; - } - /*<>*/ } + /*<>*/ if(! _c_) + /*<>*/ return 0; + var k = /*<>*/ _c_[1], data = _c_[2], next = _c_[3]; + /*<>*/ if(caml_call2(H[1], key, k)) + /*<>*/ return [0, data]; + /*<>*/ _c_ = next; + } + /*<>*/ } function find_all(h, key){ var - _c_ = /*<>*/ key_index(h, key), + _c_ = /*<>*/ key_index(h, key), _c_ = - /*<>*/ /*<>*/ caml_check_bound + /*<>*/ /*<>*/ caml_check_bound (h[2], _c_) [_c_ + 1]; - /*<>*/ for(;;){ - /*<>*/ if(! _c_) - /*<>*/ return 0; - var k = /*<>*/ _c_[1], d = _c_[2], next = _c_[3]; - /*<>*/ if(caml_call2(H[1], k, key)) break; - /*<>*/ _c_ = next; + /*<>*/ for(;;){ + /*<>*/ if(! _c_) + /*<>*/ return 0; + var k = /*<>*/ _c_[1], d = _c_[2], next = _c_[3]; + /*<>*/ if(caml_call2(H[1], k, key)) break; + /*<>*/ _c_ = next; } var - block = /*<>*/ [0, d, 24029], - dst = /*<>*/ block, + block = /*<>*/ [0, d, 24029], + dst = /*<>*/ block, offset = 1, _c_ = next; for(;;){ - /*<>*/ if(! _c_){ - /*<>*/ dst[offset + 1] = 0; - /*<>*/ return block; + /*<>*/ if(! _c_){ + /*<>*/ dst[offset + 1] = 0; + /*<>*/ return block; } var - k$0 = /*<>*/ _c_[1], + k$0 = /*<>*/ _c_[1], d$0 = _c_[2], next$0 = _c_[3]; - /*<>*/ if(caml_call2(H[1], k$0, key)){ - var dst$0 = /*<>*/ [0, d$0, 24029]; + /*<>*/ if(caml_call2(H[1], k$0, key)){ + var dst$0 = /*<>*/ [0, d$0, 24029]; dst[offset + 1] = dst$0; dst = dst$0; offset = 1; _c_ = next$0; } else - /*<>*/ _c_ = next$0; + /*<>*/ _c_ = next$0; } - /*<>*/ } - function replace(h, key, data){ - var - i = /*<>*/ key_index(h, key), - l = /*<>*/ caml_check_bound(h[2], i)[i + 1], - _c_ = /*<>*/ l; + /*<>*/ } + function retrieve_bucket(key, bucket$1){ + var bucket = /*<>*/ bucket$1; for(;;){ - /*<>*/ if(_c_){ - var k = _c_[1], next = _c_[3]; - /*<>*/ if(! caml_call2(H[1], k, key)){ - /*<>*/ _c_ = next; - continue; - } - /*<>*/ _c_[1] = key; - /*<>*/ _c_[2] = data; - /*<>*/ _c_ = 0; - } - else - /*<>*/ _c_ = 1; - /*<>*/ if(_c_){ - /*<>*/ caml_check_bound(h[2], i)[i + 1] = [0, key, data, l]; - /*<>*/ h[1] = h[1] + 1 | 0; - /*<>*/ _c_ = h[2].length - 1 << 1 < h[1] ? 1 : 0; - if(_c_) - /*<>*/ return resize(key_index, h) /*<>*/ ; - } - /*<>*/ return _c_; + if(! bucket) /*<>*/ return bucket; + var k = /*<>*/ bucket[1], bucket$0 = bucket[3]; + /*<>*/ if(caml_call2(H[1], k, key)) + /*<>*/ return bucket; + /*<>*/ bucket = bucket$0; + } + /*<>*/ } + function replace_bucket(h, key, i, l, data, _c_){ + /*<>*/ if(_c_){ + /*<>*/ _c_[1] = key; + /*<>*/ _c_[2] = data; + return 0; } - /*<>*/ } + /*<>*/ caml_check_bound(h[2], i)[i + 1] = [0, key, data, l]; + /*<>*/ h[1] = h[1] + 1 | 0; + /*<>*/ _c_ = h[2].length - 1 << 1 < h[1] ? 1 : 0; + return _c_ ? /*<>*/ resize(key_index, h) : _c_ /*<>*/ ; + } + function find_and_replace(h, key, data){ + var + i = /*<>*/ key_index(h, key), + l = /*<>*/ caml_check_bound(h[2], i)[i + 1], + bucket = /*<>*/ retrieve_bucket(key, l); + /*<>*/ if(bucket) + var + data$0 = bucket[2], + old_data = /*<>*/ [0, data$0]; + else + /*<>*/ old_data = 0; + /*<>*/ replace_bucket(h, key, i, l, data, bucket); + /*<>*/ return old_data; + /*<>*/ } + function replace(h, key, data){ + var + i = /*<>*/ key_index(h, key), + l = /*<>*/ caml_check_bound(h[2], i)[i + 1], + bucket = /*<>*/ retrieve_bucket(key, l); + /*<>*/ return replace_bucket + (h, key, i, l, data, bucket) /*<>*/ ; + } function mem(h, key){ var - _c_ = /*<>*/ key_index(h, key), + _c_ = /*<>*/ key_index(h, key), _c_ = - /*<>*/ /*<>*/ caml_check_bound + /*<>*/ /*<>*/ caml_check_bound (h[2], _c_) [_c_ + 1]; - /*<>*/ for(;;){ - /*<>*/ if(! _c_) - /*<>*/ return 0; + /*<>*/ for(;;){ + /*<>*/ if(! _c_) + /*<>*/ return 0; var - k = /*<>*/ _c_[1], + k = /*<>*/ _c_[1], next = _c_[3], - _c_ = /*<>*/ caml_call2(H[1], k, key); - /*<>*/ if(_c_) return _c_; + _c_ = /*<>*/ caml_call2(H[1], k, key); + /*<>*/ if(_c_) return _c_; _c_ = next; } - /*<>*/ } + /*<>*/ } function add_seq(tbl, i){ - /*<>*/ return Stdlib_Seq[4].call + /*<>*/ return Stdlib_Seq[4].call (null, function(param){ - var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return add(tbl, k, v) /*<>*/ ; + var v = /*<>*/ param[2], k = param[1]; + /*<>*/ return add(tbl, k, v) /*<>*/ ; }, - i) /*<>*/ ; + i) /*<>*/ ; } function replace_seq(tbl, i){ - /*<>*/ return Stdlib_Seq[4].call + /*<>*/ return Stdlib_Seq[4].call (null, function(param){ - var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return replace(tbl, k, v) /*<>*/ ; + var v = /*<>*/ param[2], k = param[1]; + /*<>*/ return replace(tbl, k, v) /*<>*/ ; }, - i) /*<>*/ ; + i) /*<>*/ ; } function of_seq(i){ - var tbl = /*<>*/ create(0, 16); - /*<>*/ replace_seq(tbl, i); - /*<>*/ return tbl; - /*<>*/ } + var tbl = /*<>*/ create(0, 16); + /*<>*/ replace_seq(tbl, i); + /*<>*/ return tbl; + /*<>*/ } /*<>*/ return [0, create, clear, @@ -25722,10 +27455,12 @@ copy, add, remove, + find_and_remove, find, find_opt, find_all, replace, + find_and_replace, mem, iter, filter_map_inplace, @@ -25743,7 +27478,7 @@ function Make(H){ var equal = H[1]; function seeded_hash(seed, x){ - /*<>*/ return caml_call1(H[2], x) /*<>*/ ; + /*<>*/ return caml_call1(H[2], x) /*<>*/ ; } var include = /*<>*/ MakeSeeded([0, equal, seeded_hash]), @@ -25753,29 +27488,31 @@ copy = include[4], add = include[5], remove = include[6], - find = include[7], - find_opt = include[8], - find_all = include[9], - replace = include[10], - mem = include[11], - iter = include[12], - filter_map_inplace = include[13], - fold = include[14], - length = include[15], - stats = include[16], - to_seq = include[17], - to_seq_keys = include[18], - to_seq_values = include[19], - add_seq = include[20], - replace_seq = include[21]; + find_and_remove = include[7], + find = include[8], + find_opt = include[9], + find_all = include[10], + replace = include[11], + find_and_replace = include[12], + mem = include[13], + iter = include[14], + filter_map_inplace = include[15], + fold = include[16], + length = include[17], + stats = include[18], + to_seq = include[19], + to_seq_keys = include[20], + to_seq_values = include[21], + add_seq = include[22], + replace_seq = include[23]; function create(sz){ - /*<>*/ return caml_call2(_c_, _b_, sz) /*<>*/ ; + /*<>*/ return caml_call2(_c_, _b_, sz) /*<>*/ ; } function of_seq(i){ - var tbl = /*<>*/ caml_call2(_c_, _b_, 16); - /*<>*/ caml_call2(replace_seq, tbl, i); - /*<>*/ return tbl; - /*<>*/ } + var tbl = /*<>*/ caml_call2(_c_, _b_, 16); + /*<>*/ caml_call2(replace_seq, tbl, i); + /*<>*/ return tbl; + /*<>*/ } /*<>*/ return [0, create, clear, @@ -25783,10 +27520,12 @@ copy, add, remove, + find_and_remove, find, find_opt, find_all, replace, + find_and_replace, mem, iter, filter_map_inplace, @@ -25801,264 +27540,298 @@ of_seq]; } function hash(x){ - /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, 0, x) /*<>*/ ; } function hash_param(n1, n2, x){ - /*<>*/ return caml_hash(n1, n2, 0, x) /*<>*/ ; + /*<>*/ return caml_hash(n1, n2, 0, x) /*<>*/ ; } function seeded_hash(seed, x){ - /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; + /*<>*/ return caml_hash(10, 100, seed, x) /*<>*/ ; } function key_index(h, key){ - /*<>*/ return 4 <= h.length - 1 - ? /*<>*/ caml_hash + /*<>*/ return 4 <= h.length - 1 + ? /*<>*/ caml_hash (10, 100, h[3], key) & (h[2].length - 2 | 0) - : /*<>*/ Stdlib + : /*<>*/ Stdlib [1].call - (null, "Hashtbl: unsupported hash table format") /*<>*/ ; + (null, "Hashtbl: unsupported hash table format") /*<>*/ ; } function add(h, key, data){ var - i = /*<>*/ key_index(h, key), + i = /*<>*/ key_index(h, key), bucket = - /*<>*/ [0, + /*<>*/ [0, key, data, caml_check_bound(h[2], i)[i + 1]]; - /*<>*/ caml_check_bound(h[2], i)[i + 1] = bucket; - /*<>*/ h[1] = h[1] + 1 | 0; - var _b_ = /*<>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0; - return _b_ ? /*<>*/ resize(key_index, h) : _b_ /*<>*/ ; + /*<>*/ caml_check_bound(h[2], i)[i + 1] = bucket; + /*<>*/ h[1] = h[1] + 1 | 0; + var _b_ = /*<>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0; + return _b_ ? /*<>*/ resize(key_index, h) : _b_ /*<>*/ ; } - function remove(h, key){ - var - i = /*<>*/ key_index(h, key), - prec$1 = /*<>*/ caml_check_bound(h[2], i)[i + 1], - prec$0 = /*<>*/ 0, - prec = prec$1; + function remove_bucket(h, i, key, prec$0, bucket$1){ + var prec = /*<>*/ prec$0, bucket = bucket$1; for(;;){ - /*<>*/ if(! prec) /*<>*/ return 0; - var k = /*<>*/ prec[1], next = prec[3]; - /*<>*/ if(0 === caml_compare(k, key)){ - /*<>*/ h[1] = h[1] - 1 | 0; - /*<>*/ return prec$0 - ? (prec$0[3] = next, 0) - : ( /*<>*/ caml_check_bound - (h[2], i) - [i + 1] - = next, - 0) /*<>*/ ; - } - /*<>*/ prec$0 = prec; - prec = next; - } - /*<>*/ } + if(! bucket) /*<>*/ return bucket; + var k = /*<>*/ bucket[1], bucket$0 = bucket[3]; + /*<>*/ if(0 === caml_compare(k, key)){ + /*<>*/ h[1] = h[1] - 1 | 0; + /*<>*/ if(prec) + /*<>*/ prec[3] = bucket$0; + else + /*<>*/ caml_check_bound(h[2], i)[i + 1] = bucket$0; + /*<>*/ return bucket; + } + /*<>*/ prec = bucket; + bucket = bucket$0; + } + /*<>*/ } + function find_and_remove(h, key){ + var + i = /*<>*/ key_index(h, key), + bucket = + /*<>*/ /*<>*/ remove_bucket + (h, + i, + key, + 0, + /*<>*/ caml_check_bound(h[2], i)[i + 1]); + /*<>*/ if(! bucket) + /*<>*/ return 0; + var data = /*<>*/ bucket[2]; + /*<>*/ return [0, data]; + /*<>*/ } + function remove(h, key){ + var i = /*<>*/ key_index(h, key); + /*<>*/ /*<>*/ remove_bucket + (h, + i, + key, + 0, + /*<>*/ caml_check_bound(h[2], i)[i + 1]); + /*<>*/ return 0; + } function find(h, key){ var - _b_ = /*<>*/ key_index(h, key), - _b_ = /*<>*/ caml_check_bound(h[2], _b_)[_b_ + 1]; - /*<>*/ if(! _b_) - /*<>*/ throw caml_maybe_attach_backtrace + _b_ = /*<>*/ key_index(h, key), + _b_ = /*<>*/ caml_check_bound(h[2], _b_)[_b_ + 1]; + /*<>*/ if(! _b_) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - var k1 = /*<>*/ _b_[1], d1 = _b_[2], next1 = _b_[3]; - /*<>*/ if(0 === caml_compare(key, k1)) - /*<>*/ return d1; - /*<>*/ if(! next1) - /*<>*/ throw caml_maybe_attach_backtrace + var k1 = /*<>*/ _b_[1], d1 = _b_[2], next1 = _b_[3]; + /*<>*/ if(0 === caml_compare(key, k1)) + /*<>*/ return d1; + /*<>*/ if(! next1) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - k2 = /*<>*/ next1[1], + k2 = /*<>*/ next1[1], d2 = next1[2], next2 = next1[3]; - /*<>*/ if(0 === caml_compare(key, k2)) - /*<>*/ return d2; - /*<>*/ if(! next2) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(0 === caml_compare(key, k2)) + /*<>*/ return d2; + /*<>*/ if(! next2) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - k3 = /*<>*/ next2[1], + k3 = /*<>*/ next2[1], d3 = next2[2], next3 = next2[3]; - /*<>*/ if(0 === caml_compare(key, k3)) - /*<>*/ return d3; - /*<>*/ _b_ = next3; + /*<>*/ if(0 === caml_compare(key, k3)) + /*<>*/ return d3; + /*<>*/ _b_ = next3; for(;;){ - /*<>*/ if(! _b_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ if(! _b_) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); - var k = /*<>*/ _b_[1], data = _b_[2], next = _b_[3]; - /*<>*/ if(0 === caml_compare(key, k)) - /*<>*/ return data; - /*<>*/ _b_ = next; + var k = /*<>*/ _b_[1], data = _b_[2], next = _b_[3]; + /*<>*/ if(0 === caml_compare(key, k)) + /*<>*/ return data; + /*<>*/ _b_ = next; } - /*<>*/ } + /*<>*/ } function find_opt(h, key){ var - _b_ = /*<>*/ key_index(h, key), - _b_ = /*<>*/ caml_check_bound(h[2], _b_)[_b_ + 1]; - /*<>*/ if(! _b_) /*<>*/ return 0; - var k1 = /*<>*/ _b_[1], d1 = _b_[2], next1 = _b_[3]; - /*<>*/ if(0 === caml_compare(key, k1)) - /*<>*/ return [0, d1]; - /*<>*/ if(! next1) /*<>*/ return 0; + _b_ = /*<>*/ key_index(h, key), + _b_ = /*<>*/ caml_check_bound(h[2], _b_)[_b_ + 1]; + /*<>*/ if(! _b_) /*<>*/ return 0; + var k1 = /*<>*/ _b_[1], d1 = _b_[2], next1 = _b_[3]; + /*<>*/ if(0 === caml_compare(key, k1)) + /*<>*/ return [0, d1]; + /*<>*/ if(! next1) /*<>*/ return 0; var - k2 = /*<>*/ next1[1], + k2 = /*<>*/ next1[1], d2 = next1[2], next2 = next1[3]; - /*<>*/ if(0 === caml_compare(key, k2)) - /*<>*/ return [0, d2]; - /*<>*/ if(! next2) - /*<>*/ return 0; + /*<>*/ if(0 === caml_compare(key, k2)) + /*<>*/ return [0, d2]; + /*<>*/ if(! next2) + /*<>*/ return 0; var - k3 = /*<>*/ next2[1], + k3 = /*<>*/ next2[1], d3 = next2[2], next3 = next2[3]; - /*<>*/ if(0 === caml_compare(key, k3)) - /*<>*/ return [0, d3]; - /*<>*/ _b_ = next3; + /*<>*/ if(0 === caml_compare(key, k3)) + /*<>*/ return [0, d3]; + /*<>*/ _b_ = next3; for(;;){ - /*<>*/ if(! _b_) /*<>*/ return 0; - var k = /*<>*/ _b_[1], data = _b_[2], next = _b_[3]; - /*<>*/ if(0 === caml_compare(key, k)) - /*<>*/ return [0, data]; - /*<>*/ _b_ = next; + /*<>*/ if(! _b_) /*<>*/ return 0; + var k = /*<>*/ _b_[1], data = _b_[2], next = _b_[3]; + /*<>*/ if(0 === caml_compare(key, k)) + /*<>*/ return [0, data]; + /*<>*/ _b_ = next; } - /*<>*/ } + /*<>*/ } function find_all(h, key){ var - _b_ = /*<>*/ key_index(h, key), + _b_ = /*<>*/ key_index(h, key), _b_ = - /*<>*/ /*<>*/ caml_check_bound + /*<>*/ /*<>*/ caml_check_bound (h[2], _b_) [_b_ + 1]; - /*<>*/ for(;;){ - /*<>*/ if(! _b_) /*<>*/ return 0; - var k = /*<>*/ _b_[1], data = _b_[2], next = _b_[3]; - /*<>*/ if(0 === caml_compare(k, key)) break; - /*<>*/ _b_ = next; + /*<>*/ for(;;){ + /*<>*/ if(! _b_) /*<>*/ return 0; + var k = /*<>*/ _b_[1], data = _b_[2], next = _b_[3]; + /*<>*/ if(0 === caml_compare(k, key)) break; + /*<>*/ _b_ = next; } var - block = /*<>*/ [0, data, 24029], - dst = /*<>*/ block, + block = /*<>*/ [0, data, 24029], + dst = /*<>*/ block, offset = 1, _b_ = next; for(;;){ - /*<>*/ if(! _b_){ - /*<>*/ dst[offset + 1] = 0; - /*<>*/ return block; + /*<>*/ if(! _b_){ + /*<>*/ dst[offset + 1] = 0; + /*<>*/ return block; } var - k$0 = /*<>*/ _b_[1], + k$0 = /*<>*/ _b_[1], data$0 = _b_[2], next$0 = _b_[3]; - /*<>*/ if(0 === caml_compare(k$0, key)){ - var dst$0 = /*<>*/ [0, data$0, 24029]; + /*<>*/ if(0 === caml_compare(k$0, key)){ + var dst$0 = /*<>*/ [0, data$0, 24029]; dst[offset + 1] = dst$0; dst = dst$0; offset = 1; _b_ = next$0; } else - /*<>*/ _b_ = next$0; + /*<>*/ _b_ = next$0; } - /*<>*/ } - function replace(h, key, data){ - var - i = /*<>*/ key_index(h, key), - l = /*<>*/ caml_check_bound(h[2], i)[i + 1], - _b_ = /*<>*/ l; + /*<>*/ } + function retrieve_bucket(key, bucket$1){ + var bucket = /*<>*/ bucket$1; for(;;){ - /*<>*/ if(_b_){ - var k = _b_[1], next = _b_[3]; - /*<>*/ if(0 !== caml_compare(k, key)){ - /*<>*/ _b_ = next; - continue; - } - /*<>*/ _b_[1] = key; - /*<>*/ _b_[2] = data; - /*<>*/ _b_ = 0; - } - else - /*<>*/ _b_ = 1; - /*<>*/ if(_b_){ - /*<>*/ caml_check_bound(h[2], i)[i + 1] = [0, key, data, l]; - /*<>*/ h[1] = h[1] + 1 | 0; - /*<>*/ _b_ = h[2].length - 1 << 1 < h[1] ? 1 : 0; - if(_b_) - /*<>*/ return resize(key_index, h) /*<>*/ ; - } - /*<>*/ return _b_; + if(! bucket) /*<>*/ return bucket; + var k = /*<>*/ bucket[1], bucket$0 = bucket[3]; + /*<>*/ if(0 === caml_compare(k, key)) + /*<>*/ return bucket; + /*<>*/ bucket = bucket$0; + } + /*<>*/ } + function replace_bucket(h, key, i, l, data, bucket){ + /*<>*/ if(bucket){ + /*<>*/ bucket[1] = key; + /*<>*/ bucket[2] = data; + return 0; } - /*<>*/ } + /*<>*/ caml_check_bound(h[2], i)[i + 1] = [0, key, data, l]; + /*<>*/ h[1] = h[1] + 1 | 0; + var _b_ = /*<>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0; + return _b_ ? /*<>*/ resize(key_index, h) : _b_ /*<>*/ ; + } + function find_and_replace(h, key, data){ + var + i = /*<>*/ key_index(h, key), + l = /*<>*/ caml_check_bound(h[2], i)[i + 1], + bucket = /*<>*/ retrieve_bucket(key, l); + /*<>*/ if(bucket) + var + data$0 = bucket[2], + old_data = /*<>*/ [0, data$0]; + else + /*<>*/ old_data = 0; + /*<>*/ replace_bucket(h, key, i, l, data, bucket); + /*<>*/ return old_data; + /*<>*/ } + function replace(h, key, data){ + var + i = /*<>*/ key_index(h, key), + l = /*<>*/ caml_check_bound(h[2], i)[i + 1], + bucket = /*<>*/ retrieve_bucket(key, l); + /*<>*/ return replace_bucket + (h, key, i, l, data, bucket) /*<>*/ ; + } function mem(h, key){ var - _b_ = /*<>*/ key_index(h, key), + _b_ = /*<>*/ key_index(h, key), _b_ = - /*<>*/ /*<>*/ caml_check_bound + /*<>*/ /*<>*/ caml_check_bound (h[2], _b_) [_b_ + 1]; - /*<>*/ for(;;){ - /*<>*/ if(! _b_) /*<>*/ return 0; + /*<>*/ for(;;){ + /*<>*/ if(! _b_) /*<>*/ return 0; var - k = /*<>*/ _b_[1], + k = /*<>*/ _b_[1], next = _b_[3], - _b_ = /*<>*/ 0 === caml_compare(k, key) ? 1 : 0; - /*<>*/ if(_b_) return _b_; + _b_ = /*<>*/ 0 === caml_compare(k, key) ? 1 : 0; + /*<>*/ if(_b_) return _b_; _b_ = next; } - /*<>*/ } + /*<>*/ } function add_seq(tbl, i){ - /*<>*/ return Stdlib_Seq[4].call + /*<>*/ return Stdlib_Seq[4].call (null, function(param){ - var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return add(tbl, k, v) /*<>*/ ; + var v = /*<>*/ param[2], k = param[1]; + /*<>*/ return add(tbl, k, v) /*<>*/ ; }, - i) /*<>*/ ; + i) /*<>*/ ; } function replace_seq(tbl, i){ - /*<>*/ return Stdlib_Seq[4].call + /*<>*/ return Stdlib_Seq[4].call (null, function(param){ - var v = /*<>*/ param[2], k = param[1]; - /*<>*/ return replace(tbl, k, v) /*<>*/ ; + var v = /*<>*/ param[2], k = param[1]; + /*<>*/ return replace(tbl, k, v) /*<>*/ ; }, - i) /*<>*/ ; + i) /*<>*/ ; } function of_seq(i){ - var tbl = /*<>*/ create(0, 16); - /*<>*/ replace_seq(tbl, i); - /*<>*/ return tbl; - /*<>*/ } + var tbl = /*<>*/ create(0, 16); + /*<>*/ replace_seq(tbl, i); + /*<>*/ return tbl; + /*<>*/ } function rebuild(_b_, h){ var random = - /*<>*/ _b_ + /*<>*/ _b_ ? _b_[1] - : /*<>*/ Stdlib_Atomic[3].call(null, randomized), - s = /*<>*/ power_2_above(16, h[2].length - 1); - /*<>*/ if(random){ - /*<>*/ _b_ = - caml_call1(Stdlib_Domain[11][2], prng_key); + : /*<>*/ Stdlib_Atomic[3].call(null, randomized), + s = /*<>*/ power_2_above(16, h[2].length - 1); + /*<>*/ if(random){ + /*<>*/ _b_ = + caml_call1(Stdlib_Domain[12][2], prng_key); var seed = - /*<>*/ /*<>*/ caml_call1 + /*<>*/ /*<>*/ caml_call1 (Stdlib_Random[19][4], _b_); } else - /*<>*/ seed = 4 <= h.length - 1 ? h[3] : 0; - /*<>*/ _b_ = 4 <= h.length - 1 ? h[4] : s; + /*<>*/ seed = 4 <= h.length - 1 ? h[3] : 0; + /*<>*/ _b_ = 4 <= h.length - 1 ? h[4] : s; var h$0 = - /*<>*/ [0, h[1], caml_array_make(s, 0), seed, _b_]; - /*<>*/ insert_all_buckets - (function(_b_){ /*<>*/ return key_index(h$0, _b_);}, + /*<>*/ [0, h[1], caml_array_make(s, 0), seed, _b_]; + /*<>*/ insert_all_buckets + (function(_b_){ /*<>*/ return key_index(h$0, _b_);}, 0, h[2], h$0[2]); - /*<>*/ return h$0; - /*<>*/ } + /*<>*/ return h$0; + /*<>*/ } /*<>*/ runtime.caml_register_global ([0, create, @@ -26071,7 +27844,9 @@ find_all, mem, remove, + find_and_remove, replace, + find_and_replace, iter, filter_map_inplace, fold, @@ -26221,7 +27996,7 @@ var sz$0 = /*<>*/ 7 <= sz ? sz : 7, sz$1 = - /*<>*/ Stdlib_Sys[14] < sz$0 ? Stdlib_Sys[14] : sz$0; + /*<>*/ Stdlib_Sys[15] < sz$0 ? Stdlib_Sys[15] : sz$0; /*<>*/ return [0, caml_array_make(sz$1, emptybucket), /*<>*/ caml_array_make(sz$1, [0]), @@ -26352,8 +28127,8 @@ } var newsz = - /*<>*/ Stdlib_Int[10].call - (null, ((3 * sz | 0) / 2 | 0) + 3 | 0, Stdlib_Sys[14] - 2 | 0); + /*<>*/ Stdlib_Int[14].call + (null, ((3 * sz | 0) / 2 | 0) + 3 | 0, Stdlib_Sys[15] - 2 | 0); /*<>*/ if(newsz <= sz) /*<>*/ Stdlib[2].call (null, "Weak.Make: hash bucket cannot grow more"); @@ -26435,8 +28210,8 @@ var oldlen = /*<>*/ t[1].length - 1, newlen = - /*<>*/ Stdlib_Int[10].call - (null, ((3 * oldlen | 0) / 2 | 0) + 3 | 0, Stdlib_Sys[14]); + /*<>*/ Stdlib_Int[14].call + (null, ((3 * oldlen | 0) / 2 | 0) + 3 | 0, Stdlib_Sys[15]); /*<>*/ if(oldlen < newlen){ var newt = /*<>*/ create$0(newlen), @@ -26483,7 +28258,7 @@ found = 0; for(;;){ if - (i < sz && /*<>*/ Stdlib_Option[10].call(null, found)){ + (i < sz && /*<>*/ Stdlib_Option[14].call(null, found)){ /*<>*/ if(h !== caml_check_bound(hashes, i)[i + 1]){ var i$2 = /*<>*/ i + 1 | 0; i = i$2; @@ -26639,7 +28414,7 @@ //# unitInfo: Provides: Stdlib__Format //# unitInfo: Requires: CamlinternalFormat, CamlinternalFormatBasics, Stdlib, Stdlib__Array, Stdlib__Buffer, Stdlib__Bytes, Stdlib__Domain, Stdlib__Int, Stdlib__List, Stdlib__Queue, Stdlib__Seq, Stdlib__Stack, Stdlib__String, Stdlib__Uchar -//# shape: Stdlib__Format:[F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(4),F(3),F(2),F(1),F(3),F(2),F(5),F(4),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2)*,F(2),F(1),F(2),F(1),F(3),F(2),F(3),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),N,F(2),F(1),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(1)*,F(3),F(2),F(3),F(2),F(2),F(1),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(2)*,F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2)*,F(1),N,F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2)*,F(1),F(2)*,F(1),F(2),F(1),F(3),F(2),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(3),F(3)*,F(2),F(1),F(2)*,F(1),F(1),F(1),N,F(1),N,F(1),F(1),N,F(1),N,F(1),F(1),F(2),F(2),F(1),F(1)*,F(1),F(1),F(1),F(2),F(1),F(5),F(4),F(4),F(4),F(2),F(1),F(4),F(4),F(4),F(1)*->F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2)] +//# shape: Stdlib__Format:[F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(4),F(3),F(2),F(1),F(3),F(2),F(5),F(4),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2)*,F(2),F(1),F(2),F(1),F(3),F(2),F(3),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),N,F(2),F(1),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(1)*,F(3),F(2),F(3),F(2),F(2),F(1),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(2)*,F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2)*,F(1),N,F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2)*,F(1),F(2)*,F(1),F(2),F(1),F(3),F(2),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(3),F(3)*,F(2),F(1),F(2)*,F(1),F(1),F(1),N,F(1),N,F(1),F(1),N,F(1),N,F(1),F(1),F(2),F(2),F(1),F(1)*,F(1),F(1),F(1),F(2),F(1),F(5),F(4),F(4),F(4),F(2),F(1),F(4),F(4),F(4),F(1)*->F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2),N,F(3),F(2),F(2),F(2),F(3)] (function (globalThis){ "use strict"; @@ -26726,7 +28501,7 @@ var indent = /*<>*/ (state[6] - width | 0) + offset | 0, real_indent = - /*<>*/ Stdlib_Int[10].call(null, state[8], indent); + /*<>*/ Stdlib_Int[14].call(null, state[8], indent); /*<>*/ state[10] = real_indent; /*<>*/ state[9] = state[6] - state[10] | 0; var n = /*<>*/ state[10]; @@ -26949,7 +28724,7 @@ /*<>*/ return Stdlib_Stack[3].call (null, [0, -1, [0, unknown, _b_, 0]], stack) /*<>*/ ; } - function set_size(state, ty){ + function set_size(state, break_hint){ var _N_ = /*<>*/ Stdlib_Stack[8].call(null, state[1]); /*<>*/ if(! _N_) /*<>*/ return; /*<>*/ _N_ = _N_[1]; @@ -26963,349 +28738,353 @@ if(typeof _N_ !== "number") switch(_N_[0]){ case 4: - /*<>*/ if(1 - ty){ - var x$0 = /*<>*/ state[13] + size | 0; + /*<>*/ if(1 - break_hint){ + var x$0 = /*<>*/ state[13] + size | 0; /*<>*/ queue_elem[1] = x$0; /*<>*/ Stdlib_Stack[5].call(null, state[1]); } /*<>*/ return; case 2: case 3: - /*<>*/ if(ty){ - var x = /*<>*/ state[13] + size | 0; + /*<>*/ if(break_hint){ + var x = /*<>*/ state[13] + size | 0; /*<>*/ queue_elem[1] = x; /*<>*/ Stdlib_Stack[5].call(null, state[1]); } /*<>*/ return; } /*<>*/ } - function scan_push(state, b, token){ - /*<>*/ pp_enqueue(state, token); - /*<>*/ if(b) - /*<>*/ set_size(state, 1); - var elem = /*<>*/ [0, state[13], token]; - /*<>*/ return Stdlib_Stack[3].call(null, elem, state[1]) /*<>*/ ; + function scan_push(state, break_hint, token){ + /*<>*/ if(break_hint){ + /*<>*/ Stdlib_Queue[3].call(null, token, state[29]); + /*<>*/ set_size(state, 1); + /*<>*/ state[13] = state[13] + token[3] | 0; + } + else + /*<>*/ pp_enqueue(state, token); + var elem = /*<>*/ [0, state[13], token]; + /*<>*/ return Stdlib_Stack[3].call(null, elem, state[1]) /*<>*/ ; } function pp_open_box_gen(state, indent, br_ty){ - /*<>*/ state[14] = state[14] + 1 | 0; - /*<>*/ if(state[14] < state[15]){ + /*<>*/ state[14] = state[14] + 1 | 0; + /*<>*/ if(state[14] < state[15]){ var - size$0 = /*<>*/ - state[13] | 0, - elem = /*<>*/ [0, size$0, [4, indent, br_ty], 0]; - /*<>*/ return scan_push(state, 0, elem) /*<>*/ ; + size$0 = /*<>*/ - state[13] | 0, + elem = /*<>*/ [0, size$0, [4, indent, br_ty], 0]; + /*<>*/ return scan_push(state, 0, elem) /*<>*/ ; } - var _N_ = /*<>*/ state[14] === state[15] ? 1 : 0; + var _N_ = /*<>*/ state[14] === state[15] ? 1 : 0; if(! _N_) return _N_; var - s = /*<>*/ state[16], + s = /*<>*/ state[16], size = /*<>*/ pp_string_width(state, s); - /*<>*/ return enqueue_string_as(state, size, s) /*<>*/ ; + /*<>*/ return enqueue_string_as(state, size, s) /*<>*/ ; } var zero = /*<>*/ 0; function pp_close_box(state, _N_){ - /*<>*/ _N_ = 1 < state[14] ? 1 : 0; + /*<>*/ _N_ = 1 < state[14] ? 1 : 0; if(_N_){ - /*<>*/ if(state[14] < state[15]){ - /*<>*/ pp_enqueue(state, [0, zero, 1, 0]); - /*<>*/ set_size(state, 1); - /*<>*/ set_size(state, 0); + /*<>*/ if(state[14] < state[15]){ + /*<>*/ pp_enqueue(state, [0, zero, 1, 0]); + /*<>*/ set_size(state, 1); + /*<>*/ set_size(state, 0); } - /*<>*/ state[14] = state[14] - 1 | 0; + /*<>*/ state[14] = state[14] - 1 | 0; _N_ = 0; } - /*<>*/ return _N_; - /*<>*/ } + /*<>*/ return _N_; + /*<>*/ } function pp_open_stag(state, tag_name){ - /*<>*/ if(state[23]){ - /*<>*/ Stdlib_Stack[3].call(null, tag_name, state[4]); - /*<>*/ caml_call1(state[27], tag_name); + /*<>*/ if(state[23]){ + /*<>*/ Stdlib_Stack[3].call(null, tag_name, state[4]); + /*<>*/ caml_call1(state[27], tag_name); } - var _N_ = /*<>*/ state[24]; + var _N_ = /*<>*/ state[24]; if(! _N_) return _N_; - var token = /*<>*/ [6, tag_name]; - /*<>*/ return pp_enqueue(state, [0, zero, token, 0]) /*<>*/ ; + var token = /*<>*/ [6, tag_name]; + /*<>*/ return pp_enqueue(state, [0, zero, token, 0]) /*<>*/ ; } function pp_close_stag(state, _N_){ - /*<>*/ if(state[24]) - /*<>*/ pp_enqueue(state, [0, zero, 5, 0]); - /*<>*/ _N_ = state[23]; + /*<>*/ if(state[24]) + /*<>*/ pp_enqueue(state, [0, zero, 5, 0]); + /*<>*/ _N_ = state[23]; if(_N_){ - /*<>*/ _N_ = Stdlib_Stack[5].call(null, state[4]); - /*<>*/ if(_N_){ + /*<>*/ _N_ = Stdlib_Stack[5].call(null, state[4]); + /*<>*/ if(_N_){ var tag_name = _N_[1]; - /*<>*/ return caml_call1(state[28], tag_name) /*<>*/ ; + /*<>*/ return caml_call1(state[28], tag_name) /*<>*/ ; } - /*<>*/ _N_ = 0; + /*<>*/ _N_ = 0; } - /*<>*/ return _N_; - /*<>*/ } + /*<>*/ return _N_; + /*<>*/ } function pp_set_print_tags(state, b){ - /*<>*/ state[23] = b; + /*<>*/ state[23] = b; return 0; - /*<>*/ } + /*<>*/ } function pp_set_mark_tags(state, b){ - /*<>*/ state[24] = b; + /*<>*/ state[24] = b; return 0; - /*<>*/ } + /*<>*/ } function pp_get_print_tags(state, param){ - /*<>*/ return state[23]; - /*<>*/ } + /*<>*/ return state[23]; + /*<>*/ } function pp_get_mark_tags(state, param){ - /*<>*/ return state[24]; - /*<>*/ } + /*<>*/ return state[24]; + /*<>*/ } function pp_set_tags(state, b){ - /*<>*/ pp_set_print_tags(state, b); - /*<>*/ return pp_set_mark_tags(state, b) /*<>*/ ; + /*<>*/ pp_set_print_tags(state, b); + /*<>*/ return pp_set_mark_tags(state, b) /*<>*/ ; } function pp_get_formatter_stag_function(state, param){ - /*<>*/ return [0, + /*<>*/ return [0, state[25], state[26], state[27], state[28]]; - /*<>*/ } + /*<>*/ } function pp_set_formatter_stag_function(state, param){ var - pct = /*<>*/ param[4], + pct = /*<>*/ param[4], pot = param[3], mct = param[2], mot = param[1]; - /*<>*/ state[25] = mot; - /*<>*/ state[26] = mct; - /*<>*/ state[27] = pot; - /*<>*/ state[28] = pct; + /*<>*/ state[25] = mot; + /*<>*/ state[26] = mct; + /*<>*/ state[27] = pot; + /*<>*/ state[28] = pct; return 0; - /*<>*/ } + /*<>*/ } function pp_rinit(state){ /*<>*/ state[12] = 1; /*<>*/ state[13] = 1; /*<>*/ Stdlib_Queue[12].call(null, state[29]); - /*<>*/ initialize_scan_stack(state[1]); - /*<>*/ Stdlib_Stack[9].call(null, state[2]); - /*<>*/ Stdlib_Stack[9].call(null, state[3]); - /*<>*/ Stdlib_Stack[9].call(null, state[4]); - /*<>*/ Stdlib_Stack[9].call(null, state[5]); - /*<>*/ state[10] = 0; - /*<>*/ state[14] = 0; - /*<>*/ state[9] = state[6]; - /*<>*/ return pp_open_box_gen(state, 0, 3) /*<>*/ ; + /*<>*/ initialize_scan_stack(state[1]); + /*<>*/ Stdlib_Stack[9].call(null, state[2]); + /*<>*/ Stdlib_Stack[9].call(null, state[3]); + /*<>*/ Stdlib_Stack[9].call(null, state[4]); + /*<>*/ Stdlib_Stack[9].call(null, state[5]); + /*<>*/ state[10] = 0; + /*<>*/ state[14] = 0; + /*<>*/ state[9] = state[6]; + /*<>*/ return pp_open_box_gen(state, 0, 3) /*<>*/ ; } function pp_flush_queue(state, end_with_newline){ - /*<>*/ Stdlib_Stack[13].call + /*<>*/ Stdlib_Stack[13].call (null, function(param){ - /*<>*/ return pp_close_stag(state, 0) /*<>*/ ; + /*<>*/ return pp_close_stag(state, 0) /*<>*/ ; }, state[4]); - /*<>*/ for(;;){ + /*<>*/ for(;;){ if(1 >= state[14]){ - /*<>*/ state[13] = pp_infinity; - /*<>*/ advance_left(state); - /*<>*/ if(end_with_newline) - /*<>*/ pp_output_newline(state); - /*<>*/ return pp_rinit(state) /*<>*/ ; + /*<>*/ state[13] = pp_infinity; + /*<>*/ advance_left(state); + /*<>*/ if(end_with_newline) + /*<>*/ pp_output_newline(state); + /*<>*/ return pp_rinit(state) /*<>*/ ; } - /*<>*/ pp_close_box(state, 0); + /*<>*/ pp_close_box(state, 0); } - /*<>*/ } + /*<>*/ } function pp_print_as_size(state, size, s){ - var _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; + var _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; return _N_ - ? /*<>*/ enqueue_string_as(state, size, s) - : _N_ /*<>*/ ; + ? /*<>*/ enqueue_string_as(state, size, s) + : _N_ /*<>*/ ; } function pp_print_as(state, isize, s){ - /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; + /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; } function pp_print_string(state, s){ - var isize = /*<>*/ pp_string_width(state, s); - /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; + var isize = /*<>*/ pp_string_width(state, s); + /*<>*/ return pp_print_as_size(state, isize, s) /*<>*/ ; } function pp_print_substring_as(pos, len, state, size, source){ - var _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; + var _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; if(! _N_) return _N_; var token = /*<>*/ [1, source, pos, len]; /*<>*/ return enqueue_advance - (state, [0, size, token, size]) /*<>*/ ; + (state, [0, size, token, size]) /*<>*/ ; } function pp_print_substring(pos, len, state, s){ var width = /*<>*/ caml_call3(state[18], s, pos, len); - /*<>*/ return pp_print_substring_as - (pos, len, state, width, s) /*<>*/ ; + /*<>*/ return pp_print_substring_as + (pos, len, state, width, s) /*<>*/ ; } function pp_print_bytes(state, s){ var - s$0 = /*<>*/ Stdlib_Bytes[6].call(null, s), - isize = /*<>*/ runtime.caml_ml_bytes_length(s); - /*<>*/ return pp_print_as_size(state, isize, s$0) /*<>*/ ; + s$0 = /*<>*/ Stdlib_Bytes[6].call(null, s), + isize = /*<>*/ runtime.caml_ml_bytes_length(s); + /*<>*/ return pp_print_as_size(state, isize, s$0) /*<>*/ ; } function pp_print_int(state, i){ - /*<>*/ return /*<>*/ pp_print_string - (state, /*<>*/ Stdlib_Int[12].call(null, i)) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_string + (state, /*<>*/ Stdlib_Int[22].call(null, i)) /*<>*/ ; } function pp_print_float(state, f){ - /*<>*/ return /*<>*/ pp_print_string - (state, /*<>*/ Stdlib[35].call(null, f)) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_string + (state, /*<>*/ Stdlib[35].call(null, f)) /*<>*/ ; } function pp_print_bool(state, b){ - /*<>*/ return /*<>*/ pp_print_string - (state, /*<>*/ Stdlib[30].call(null, b)) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_string + (state, /*<>*/ Stdlib[30].call(null, b)) /*<>*/ ; } function pp_print_char(state, c){ - var s = /*<>*/ Stdlib_String[1].call(null, 1, c); - /*<>*/ return pp_print_as_size(state, 1, s) /*<>*/ ; + var s = /*<>*/ Stdlib_String[1].call(null, 1, c); + /*<>*/ return pp_print_as_size(state, 1, s) /*<>*/ ; } - function pp_print_nothing(state, param){ /*<>*/ return 0; - /*<>*/ } + function pp_print_nothing(state, param){ /*<>*/ return 0; + /*<>*/ } function pp_open_hbox(state, param){ - /*<>*/ return pp_open_box_gen(state, 0, 0) /*<>*/ ; + /*<>*/ return pp_open_box_gen(state, 0, 0) /*<>*/ ; } function pp_open_vbox(state, indent){ - /*<>*/ return pp_open_box_gen(state, indent, 1) /*<>*/ ; + /*<>*/ return pp_open_box_gen(state, indent, 1) /*<>*/ ; } function pp_open_hvbox(state, indent){ - /*<>*/ return pp_open_box_gen(state, indent, 2) /*<>*/ ; + /*<>*/ return pp_open_box_gen(state, indent, 2) /*<>*/ ; } function pp_open_hovbox(state, indent){ - /*<>*/ return pp_open_box_gen(state, indent, 3) /*<>*/ ; + /*<>*/ return pp_open_box_gen(state, indent, 3) /*<>*/ ; } function pp_open_box(state, indent){ - /*<>*/ return pp_open_box_gen(state, indent, 4) /*<>*/ ; + /*<>*/ return pp_open_box_gen(state, indent, 4) /*<>*/ ; } function pp_print_newline(state, param){ - /*<>*/ pp_flush_queue(state, 1); - /*<>*/ return caml_call1(state[19], 0) /*<>*/ ; + /*<>*/ pp_flush_queue(state, 1); + /*<>*/ return caml_call1(state[19], 0) /*<>*/ ; } function pp_print_flush(state, param){ - /*<>*/ pp_flush_queue(state, 0); - /*<>*/ return caml_call1(state[19], 0) /*<>*/ ; + /*<>*/ pp_flush_queue(state, 0); + /*<>*/ return caml_call1(state[19], 0) /*<>*/ ; } function pp_force_newline(state, _N_){ - /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; + /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; return _N_ - ? /*<>*/ enqueue_advance(state, [0, zero, 3, 0]) - : _N_ /*<>*/ ; + ? /*<>*/ enqueue_advance(state, [0, zero, 3, 0]) + : _N_ /*<>*/ ; } function pp_print_if_newline(state, _N_){ - /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; + /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; return _N_ - ? /*<>*/ enqueue_advance(state, [0, zero, 4, 0]) - : _N_ /*<>*/ ; + ? /*<>*/ enqueue_advance(state, [0, zero, 4, 0]) + : _N_ /*<>*/ ; } function pp_print_custom_break(state, fits, breaks){ var - after = /*<>*/ fits[3], + after = /*<>*/ fits[3], width = fits[2], before = fits[1], - _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; + _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; if(! _N_) return _N_; var - size = /*<>*/ - state[13] | 0, - token = /*<>*/ [2, fits, breaks], - _N_ = /*<>*/ pp_string_width(state, after), + size = /*<>*/ - state[13] | 0, + token = /*<>*/ [2, fits, breaks], + _N_ = /*<>*/ pp_string_width(state, after), length = - /*<>*/ (pp_string_width(state, before) + width | 0) + /*<>*/ (pp_string_width(state, before) + width | 0) + _N_ | 0; - /*<>*/ return scan_push - (state, 1, [0, size, token, length]) /*<>*/ ; + /*<>*/ return scan_push + (state, 1, [0, size, token, length]) /*<>*/ ; } function pp_print_break(state, width, offset){ - /*<>*/ return pp_print_custom_break - (state, [0, cst, width, cst], [0, cst, offset, cst]) /*<>*/ ; + /*<>*/ return pp_print_custom_break + (state, [0, cst, width, cst], [0, cst, offset, cst]) /*<>*/ ; } function pp_print_space(state, param){ - /*<>*/ return pp_print_break(state, 1, 0) /*<>*/ ; + /*<>*/ return pp_print_break(state, 1, 0) /*<>*/ ; } function pp_print_cut(state, param){ - /*<>*/ return pp_print_break(state, 0, 0) /*<>*/ ; + /*<>*/ return pp_print_break(state, 0, 0) /*<>*/ ; } function pp_open_tbox(state, _N_){ - /*<>*/ state[14] = state[14] + 1 | 0; - /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; + /*<>*/ state[14] = state[14] + 1 | 0; + /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; if(! _N_) return _N_; - /*<>*/ return enqueue_advance - (state, [0, zero, [5, [0, [0, 0]]], 0]) /*<>*/ ; + /*<>*/ return enqueue_advance + (state, [0, zero, [5, [0, [0, 0]]], 0]) /*<>*/ ; } function pp_close_tbox(state, _N_){ - /*<>*/ _N_ = 1 < state[14] ? 1 : 0; + /*<>*/ _N_ = 1 < state[14] ? 1 : 0; if(_N_){ - /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; + /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; if(_N_){ - /*<>*/ enqueue_advance(state, [0, zero, 2, 0]); - /*<>*/ state[14] = state[14] - 1 | 0; + /*<>*/ enqueue_advance(state, [0, zero, 2, 0]); + /*<>*/ state[14] = state[14] - 1 | 0; _N_ = 0; } } - /*<>*/ return _N_; - /*<>*/ } + /*<>*/ return _N_; + /*<>*/ } function pp_print_tbreak(state, width, offset){ - var _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; + var _N_ = /*<>*/ state[14] < state[15] ? 1 : 0; if(! _N_) return _N_; var - size = /*<>*/ - state[13] | 0, - elem = /*<>*/ [0, size, [3, width, offset], width]; - /*<>*/ return scan_push(state, 1, elem) /*<>*/ ; + size = /*<>*/ - state[13] | 0, + elem = /*<>*/ [0, size, [3, width, offset], width]; + /*<>*/ return scan_push(state, 1, elem) /*<>*/ ; } function pp_print_tab(state, param){ - /*<>*/ return pp_print_tbreak(state, 0, 0) /*<>*/ ; + /*<>*/ return pp_print_tbreak(state, 0, 0) /*<>*/ ; } function pp_set_tab(state, _N_){ - /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; + /*<>*/ _N_ = state[14] < state[15] ? 1 : 0; if(! _N_) return _N_; - /*<>*/ return enqueue_advance(state, [0, zero, 0, 0]) /*<>*/ ; + /*<>*/ return enqueue_advance(state, [0, zero, 0, 0]) /*<>*/ ; } function pp_set_max_boxes(state, n){ var - _N_ = /*<>*/ 1 < n ? 1 : 0, + _N_ = /*<>*/ 1 < n ? 1 : 0, _N_ = _N_ ? (state[15] = n, 0) : _N_; return _N_; - /*<>*/ } + /*<>*/ } function pp_get_max_boxes(state, param){ - /*<>*/ return state[15]; - /*<>*/ } + /*<>*/ return state[15]; + /*<>*/ } function pp_over_max_boxes(state, param){ - /*<>*/ return state[14] === state[15] ? 1 : 0; - /*<>*/ } + /*<>*/ return state[14] === state[15] ? 1 : 0; + /*<>*/ } function pp_set_ellipsis_text(state, s){ - /*<>*/ state[16] = s; + /*<>*/ state[16] = s; return 0; - /*<>*/ } + /*<>*/ } function pp_get_ellipsis_text(state, param){ - /*<>*/ return state[16]; - /*<>*/ } + /*<>*/ return state[16]; + /*<>*/ } function pp_limit(n){ - /*<>*/ return n < 1000000010 ? n : 1000000009 /*<>*/ ; + /*<>*/ return n < 1000000010 ? n : 1000000009 /*<>*/ ; } function pp_set_max_indent(state, n$0){ - var _N_ = /*<>*/ 1 < n$0 ? 1 : 0; + var _N_ = /*<>*/ 1 < n$0 ? 1 : 0; if(! _N_) return _N_; var - n$1 = /*<>*/ state[6] - n$0 | 0, - _N_ = /*<>*/ 1 <= n$1 ? 1 : 0; + n$1 = /*<>*/ state[6] - n$0 | 0, + _N_ = /*<>*/ 1 <= n$1 ? 1 : 0; if(! _N_) return _N_; - var n = /*<>*/ pp_limit(n$1); - /*<>*/ state[7] = n; - /*<>*/ state[8] = state[6] - state[7] | 0; - /*<>*/ return pp_rinit(state) /*<>*/ ; + var n = /*<>*/ pp_limit(n$1); + /*<>*/ state[7] = n; + /*<>*/ state[8] = state[6] - state[7] | 0; + /*<>*/ return pp_rinit(state) /*<>*/ ; } function pp_get_max_indent(state, param){ - /*<>*/ return state[8]; - /*<>*/ } + /*<>*/ return state[8]; + /*<>*/ } function pp_set_margin(state, n){ - var _N_ = /*<>*/ 1 <= n ? 1 : 0; + var _N_ = /*<>*/ 1 <= n ? 1 : 0; if(! _N_) return _N_; - var n$0 = /*<>*/ pp_limit(n); - /*<>*/ state[6] = n$0; - /*<>*/ if(state[8] <= state[6]) - var new_max_indent = /*<>*/ state[8]; + var n$0 = /*<>*/ pp_limit(n); + /*<>*/ state[6] = n$0; + /*<>*/ if(state[8] <= state[6]) + var new_max_indent = /*<>*/ state[8]; else{ - /*<>*/ _N_ = - Stdlib_Int[11].call(null, state[6] - state[7] | 0, state[6] / 2 | 0); - /*<>*/ new_max_indent = - /*<>*/ Stdlib_Int[11].call(null, _N_, 1); + /*<>*/ _N_ = + Stdlib_Int[15].call(null, state[6] - state[7] | 0, state[6] / 2 | 0); + /*<>*/ new_max_indent = + /*<>*/ Stdlib_Int[15].call(null, _N_, 1); } - /*<>*/ return pp_set_max_indent(state, new_max_indent) /*<>*/ ; + /*<>*/ return pp_set_max_indent(state, new_max_indent) /*<>*/ ; } var _c_ = /*<>*/ [1, "margin <= max_indent"], @@ -27313,184 +29092,184 @@ _e_ = [0, 0], _f_ = [1, "max_indent < 2"]; function validate_geometry(param){ - var margin = /*<>*/ param[2], max_indent = param[1]; - /*<>*/ return 2 <= max_indent + var margin = /*<>*/ param[2], max_indent = param[1]; + /*<>*/ return 2 <= max_indent ? margin <= max_indent ? _c_ : 1000000010 <= margin ? _d_ : _e_ - : _f_ /*<>*/ ; + : _f_ /*<>*/ ; } function check_geometry(geometry){ - /*<>*/ return 0 === validate_geometry(geometry)[0] + /*<>*/ return 0 === validate_geometry(geometry)[0] ? 1 - : 0 /*<>*/ ; + : 0 /*<>*/ ; } function pp_get_margin(state, param){ - /*<>*/ return state[6]; - /*<>*/ } + /*<>*/ return state[6]; + /*<>*/ } function pp_set_full_geometry(state, param){ - var margin = /*<>*/ param[2], max_indent = param[1]; - /*<>*/ pp_set_margin(state, margin); - /*<>*/ pp_set_max_indent(state, max_indent); - /*<>*/ return 0; - /*<>*/ } + var margin = /*<>*/ param[2], max_indent = param[1]; + /*<>*/ pp_set_margin(state, margin); + /*<>*/ pp_set_max_indent(state, max_indent); + /*<>*/ return 0; + /*<>*/ } function pp_set_geometry(state, max_indent, margin){ var - geometry = /*<>*/ [0, max_indent, margin], - _N_ = /*<>*/ validate_geometry(geometry); - /*<>*/ if(0 === _N_[0]) - /*<>*/ return pp_set_full_geometry(state, geometry) /*<>*/ ; + geometry = /*<>*/ [0, max_indent, margin], + _N_ = /*<>*/ validate_geometry(geometry); + /*<>*/ if(0 === _N_[0]) + /*<>*/ return pp_set_full_geometry(state, geometry) /*<>*/ ; var - msg = /*<>*/ _N_[1], + msg = /*<>*/ _N_[1], _N_ = - /*<>*/ Stdlib[28].call + /*<>*/ Stdlib[28].call (null, "Format.pp_set_geometry: ", msg); - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ throw caml_maybe_attach_backtrace ([0, Stdlib[6], _N_], 1); - /*<>*/ } + /*<>*/ } function pp_safe_set_geometry(state, max_indent, margin){ - var geometry = /*<>*/ [0, max_indent, margin]; - /*<>*/ return 0 === validate_geometry(geometry)[0] - ? /*<>*/ pp_set_full_geometry(state, geometry) - : 0 /*<>*/ ; + var geometry = /*<>*/ [0, max_indent, margin]; + /*<>*/ return 0 === validate_geometry(geometry)[0] + ? /*<>*/ pp_set_full_geometry(state, geometry) + : 0 /*<>*/ ; } function pp_get_geometry(state, param){ - /*<>*/ return [0, state[8], state[6]]; - /*<>*/ } + /*<>*/ return [0, state[8], state[6]]; + /*<>*/ } function pp_update_geometry(state, update){ - var geometry = /*<>*/ pp_get_geometry(state, 0); - /*<>*/ return /*<>*/ pp_set_full_geometry - (state, /*<>*/ caml_call1(update, geometry)) /*<>*/ ; + var geometry = /*<>*/ pp_get_geometry(state, 0); + /*<>*/ return /*<>*/ pp_set_full_geometry + (state, /*<>*/ caml_call1(update, geometry)) /*<>*/ ; } function pp_set_formatter_out_functions(state, param){ var - j = /*<>*/ param[6], + j = /*<>*/ param[6], i = param[5], h = param[4], g = param[3], f2 = param[2], f = param[1]; - /*<>*/ state[17] = f; - /*<>*/ state[18] = f2; - /*<>*/ state[19] = g; - /*<>*/ state[20] = h; - /*<>*/ state[21] = i; - /*<>*/ state[22] = j; + /*<>*/ state[17] = f; + /*<>*/ state[18] = f2; + /*<>*/ state[19] = g; + /*<>*/ state[20] = h; + /*<>*/ state[21] = i; + /*<>*/ state[22] = j; return 0; - /*<>*/ } + /*<>*/ } function pp_get_formatter_out_functions(state, param){ - /*<>*/ return [0, + /*<>*/ return [0, state[17], state[18], state[19], state[20], state[21], state[22]]; - /*<>*/ } + /*<>*/ } function pp_set_formatter_output_functi(state, f, g){ - /*<>*/ state[17] = f; - /*<>*/ state[19] = g; + /*<>*/ state[17] = f; + /*<>*/ state[19] = g; return 0; - /*<>*/ } + /*<>*/ } function pp_get_formatter_output_functi(state, param){ - /*<>*/ return [0, state[17], state[19]]; - /*<>*/ } + /*<>*/ return [0, state[17], state[19]]; + /*<>*/ } function display_newline(state, param){ - /*<>*/ return caml_call3(state[17], "\n", 0, 1) /*<>*/ ; + /*<>*/ return caml_call3(state[17], "\n", 0, 1) /*<>*/ ; } var - blank_line = /*<>*/ Stdlib_String[1].call(null, 80, 32); + blank_line = /*<>*/ Stdlib_String[1].call(null, 80, 32); function display_blanks(state, n$1){ - var n = /*<>*/ n$1; + var n = /*<>*/ n$1; for(;;){ var _N_ = 0 < n ? 1 : 0; if(! _N_) return _N_; - /*<>*/ if(80 >= n) - /*<>*/ return caml_call3(state[17], blank_line, 0, n) /*<>*/ ; - /*<>*/ caml_call3(state[17], blank_line, 0, 80); - var n$0 = /*<>*/ n - 80 | 0; + /*<>*/ if(80 >= n) + /*<>*/ return caml_call3(state[17], blank_line, 0, n) /*<>*/ ; + /*<>*/ caml_call3(state[17], blank_line, 0, 80); + var n$0 = /*<>*/ n - 80 | 0; n = n$0; } - /*<>*/ } + /*<>*/ } function pp_set_formatter_out_channel(state, oc){ - var _K_ = /*<>*/ Stdlib[69]; - /*<>*/ state[17] = + var _K_ = /*<>*/ Stdlib[69]; + /*<>*/ state[17] = function(_L_, _M_, _N_){ - /*<>*/ return _K_(oc, _L_, _M_, _N_); + /*<>*/ return _K_(oc, _L_, _M_, _N_); }; - /*<>*/ state[19] = + /*<>*/ state[19] = function(param){ - /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; + /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; }; - /*<>*/ state[20] = + /*<>*/ state[20] = function(_K_){ - /*<>*/ return display_newline(state, _K_); + /*<>*/ return display_newline(state, _K_); }; - /*<>*/ state[21] = + /*<>*/ state[21] = function(_K_){ - /*<>*/ return display_blanks(state, _K_); + /*<>*/ return display_blanks(state, _K_); }; - /*<>*/ state[22] = + /*<>*/ state[22] = function(_K_){ - /*<>*/ return display_blanks(state, _K_); + /*<>*/ return display_blanks(state, _K_); }; - /*<>*/ return 0; + /*<>*/ return 0; } var cst$0 = /*<>*/ ">"; function default_pp_mark_open_tag(_K_){ - /*<>*/ if(_K_[1] !== String_tag) - /*<>*/ return cst; + /*<>*/ if(_K_[1] !== String_tag) + /*<>*/ return cst; var - s = /*<>*/ _K_[2], - _K_ = /*<>*/ Stdlib[28].call(null, s, cst$0); - /*<>*/ return Stdlib[28].call(null, "<", _K_) /*<>*/ ; + s = /*<>*/ _K_[2], + _K_ = /*<>*/ Stdlib[28].call(null, s, cst$0); + /*<>*/ return Stdlib[28].call(null, "<", _K_) /*<>*/ ; } function default_pp_mark_close_tag(_K_){ - /*<>*/ if(_K_[1] !== String_tag) - /*<>*/ return cst; + /*<>*/ if(_K_[1] !== String_tag) + /*<>*/ return cst; var - s = /*<>*/ _K_[2], - _K_ = /*<>*/ Stdlib[28].call(null, s, cst$0); - /*<>*/ return Stdlib[28].call(null, "<\/", _K_) /*<>*/ ; + s = /*<>*/ _K_[2], + _K_ = /*<>*/ Stdlib[28].call(null, s, cst$0); + /*<>*/ return Stdlib[28].call(null, "<\/", _K_) /*<>*/ ; } function default_pp_print_open_tag(_K_){ /*<>*/ return 0;} function default_pp_print_close_tag(_K_){return 0;} function utf_8_scalar_width(s, current, len){ var - stop = /*<>*/ current + len | 0, + stop = /*<>*/ current + len | 0, count = 0, current$0 = current; for(;;){ - /*<>*/ if(stop <= current$0) - /*<>*/ return count; + /*<>*/ if(stop <= current$0) + /*<>*/ return count; var decode = - /*<>*/ Stdlib_String[43].call(null, s, current$0), - advance = /*<>*/ Stdlib_Uchar[21].call(null, decode), - current$1 = /*<>*/ current$0 + advance | 0, + /*<>*/ Stdlib_String[71].call(null, s, current$0), + advance = /*<>*/ Stdlib_Uchar[21].call(null, decode), + current$1 = /*<>*/ current$0 + advance | 0, count$0 = count + 1 | 0; count = count$0; current$0 = current$1; } - /*<>*/ } + /*<>*/ } function ascii_width(_K_, param, len){ - /*<>*/ return len; - /*<>*/ } - var _g_ = /*<>*/ [4, 0, 3]; + /*<>*/ return len; + /*<>*/ } + var _g_ = /*<>*/ [4, 0, 3]; function pp_make_formatter(f, g, h, i, j){ var - pp_queue = /*<>*/ Stdlib_Queue[2].call(null, 0), - sys_tok = /*<>*/ [0, unknown, _g_, 0]; - /*<>*/ Stdlib_Queue[3].call(null, sys_tok, pp_queue); - var scan_stack = /*<>*/ Stdlib_Stack[2].call(null, 0); - /*<>*/ initialize_scan_stack(scan_stack); - /*<>*/ Stdlib_Stack[3].call + pp_queue = /*<>*/ Stdlib_Queue[2].call(null, 0), + sys_tok = /*<>*/ [0, unknown, _g_, 0]; + /*<>*/ Stdlib_Queue[3].call(null, sys_tok, pp_queue); + var scan_stack = /*<>*/ Stdlib_Stack[2].call(null, 0); + /*<>*/ initialize_scan_stack(scan_stack); + /*<>*/ Stdlib_Stack[3].call (null, [0, 1, sys_tok], scan_stack); var - _H_ = /*<>*/ Stdlib[19], + _H_ = /*<>*/ Stdlib[19], _I_ = Stdlib_Stack[2].call(null, 0), - _J_ = /*<>*/ Stdlib_Stack[2].call(null, 0), - _K_ = /*<>*/ Stdlib_Stack[2].call(null, 0), - pp_margin = /*<>*/ 78; - /*<>*/ return [0, + _J_ = /*<>*/ Stdlib_Stack[2].call(null, 0), + _K_ = /*<>*/ Stdlib_Stack[2].call(null, 0), + pp_margin = /*<>*/ 78; + /*<>*/ return [0, scan_stack, Stdlib_Stack[2].call(null, 0), _K_, @@ -27519,857 +29298,857 @@ default_pp_mark_close_tag, default_pp_print_open_tag, default_pp_print_close_tag, - pp_queue] /*<>*/ ; + pp_queue] /*<>*/ ; } function formatter_of_out_functions(out_funs){ - /*<>*/ return pp_make_formatter - (out_funs[1], out_funs[3], out_funs[4], out_funs[5], out_funs[6]) /*<>*/ ; + /*<>*/ return pp_make_formatter + (out_funs[1], out_funs[3], out_funs[4], out_funs[5], out_funs[6]) /*<>*/ ; } function make_formatter(output, flush){ var ppf = - /*<>*/ pp_make_formatter + /*<>*/ pp_make_formatter (output, flush, function(_H_){ /*<>*/ return 0;}, function(_H_){return 0;}, function(_H_){return 0;}); - /*<>*/ ppf[20] = + /*<>*/ ppf[20] = function(_H_){ - /*<>*/ return display_newline(ppf, _H_); + /*<>*/ return display_newline(ppf, _H_); }; - /*<>*/ ppf[21] = + /*<>*/ ppf[21] = function(_H_){ - /*<>*/ return display_blanks(ppf, _H_); + /*<>*/ return display_blanks(ppf, _H_); }; - /*<>*/ ppf[22] = + /*<>*/ ppf[22] = function(_H_){ - /*<>*/ return display_blanks(ppf, _H_); + /*<>*/ return display_blanks(ppf, _H_); }; - /*<>*/ return ppf; - /*<>*/ } + /*<>*/ return ppf; + /*<>*/ } function formatter_of_out_channel(oc){ - var _E_ = /*<>*/ Stdlib[69]; - /*<>*/ return make_formatter + var _E_ = /*<>*/ Stdlib[69]; + /*<>*/ return make_formatter (function(_F_, _G_, _H_){ - /*<>*/ return _E_(oc, _F_, _G_, _H_); + /*<>*/ return _E_(oc, _F_, _G_, _H_); }, function(param){ - /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; - }) /*<>*/ ; + /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; + }) /*<>*/ ; } function formatter_of_buffer(b){ - var _B_ = /*<>*/ Stdlib_Buffer[18]; - /*<>*/ return make_formatter + var _B_ = /*<>*/ Stdlib_Buffer[18]; + /*<>*/ return make_formatter (function(_C_, _D_, _E_){ - /*<>*/ return _B_(b, _C_, _D_, _E_); + /*<>*/ return _B_(b, _C_, _D_, _E_); }, - function(_B_){ /*<>*/ return 0;}) /*<>*/ ; + function(_B_){ /*<>*/ return 0;}) /*<>*/ ; } - var pp_buffer_size = /*<>*/ 512; + var pp_buffer_size = /*<>*/ 512; function pp_make_buffer(param){ - /*<>*/ return Stdlib_Buffer[1].call - (null, pp_buffer_size) /*<>*/ ; + /*<>*/ return Stdlib_Buffer[1].call + (null, pp_buffer_size) /*<>*/ ; } var - stdbuf = /*<>*/ pp_make_buffer(0), + stdbuf = /*<>*/ pp_make_buffer(0), std_formatter = - /*<>*/ formatter_of_out_channel(Stdlib[39]), + /*<>*/ formatter_of_out_channel(Stdlib[39]), err_formatter = - /*<>*/ formatter_of_out_channel(Stdlib[40]), - str_formatter = /*<>*/ formatter_of_buffer(stdbuf), + /*<>*/ formatter_of_out_channel(Stdlib[40]), + str_formatter = /*<>*/ formatter_of_buffer(stdbuf), stdbuf_key = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], 0, pp_make_buffer); - /*<>*/ caml_call2 - (Stdlib_Domain[11][3], stdbuf_key, stdbuf); + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], 0, pp_make_buffer); + /*<>*/ caml_call2 + (Stdlib_Domain[12][3], stdbuf_key, stdbuf); var str_formatter_key = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], 0, function(param){ - /*<>*/ return /*<>*/ formatter_of_buffer - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], stdbuf_key)) /*<>*/ ; + /*<>*/ return /*<>*/ formatter_of_buffer + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], stdbuf_key)) /*<>*/ ; }); - /*<>*/ caml_call2 - (Stdlib_Domain[11][3], str_formatter_key, str_formatter); + /*<>*/ caml_call2 + (Stdlib_Domain[12][3], str_formatter_key, str_formatter); function buffered_out_string(key, str, ofs, len){ var - _B_ = /*<>*/ caml_call1(Stdlib_Domain[11][2], key); - /*<>*/ return Stdlib_Buffer[18].call - (null, _B_, str, ofs, len) /*<>*/ ; + _B_ = /*<>*/ caml_call1(Stdlib_Domain[12][2], key); + /*<>*/ return Stdlib_Buffer[18].call + (null, _B_, str, ofs, len) /*<>*/ ; } function buffered_out_flush(oc, key, param){ var - buf = /*<>*/ caml_call1(Stdlib_Domain[11][2], key), - len = /*<>*/ Stdlib_Buffer[7].call(null, buf), - str = /*<>*/ Stdlib_Buffer[2].call(null, buf); - /*<>*/ Stdlib[69].call(null, oc, str, 0, len); - /*<>*/ Stdlib[63].call(null, oc); - /*<>*/ return Stdlib_Buffer[8].call(null, buf) /*<>*/ ; + buf = /*<>*/ caml_call1(Stdlib_Domain[12][2], key), + len = /*<>*/ Stdlib_Buffer[7].call(null, buf), + str = /*<>*/ Stdlib_Buffer[2].call(null, buf); + /*<>*/ Stdlib[69].call(null, oc, str, 0, len); + /*<>*/ Stdlib[63].call(null, oc); + /*<>*/ return Stdlib_Buffer[8].call(null, buf) /*<>*/ ; } var std_buf_key = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], 0, function(param){ - /*<>*/ return Stdlib_Buffer[1].call - (null, pp_buffer_size) /*<>*/ ; + /*<>*/ return Stdlib_Buffer[1].call + (null, pp_buffer_size) /*<>*/ ; }), err_buf_key = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], 0, function(param){ - /*<>*/ return Stdlib_Buffer[1].call - (null, pp_buffer_size) /*<>*/ ; + /*<>*/ return Stdlib_Buffer[1].call + (null, pp_buffer_size) /*<>*/ ; }), std_formatter_key = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], 0, function(param){ var - _y_ = /*<>*/ Stdlib[39], + _y_ = /*<>*/ Stdlib[39], ppf = - /*<>*/ pp_make_formatter + /*<>*/ pp_make_formatter (function(_z_, _A_, _B_){ - /*<>*/ return buffered_out_string + /*<>*/ return buffered_out_string (std_buf_key, _z_, _A_, _B_); }, function(_z_){ - /*<>*/ return buffered_out_flush + /*<>*/ return buffered_out_flush (_y_, std_buf_key, _z_); }, function(_y_){ /*<>*/ return 0;}, function(_y_){return 0;}, function(_y_){return 0;}); - /*<>*/ ppf[20] = + /*<>*/ ppf[20] = function(_y_){ - /*<>*/ return display_newline(ppf, _y_); + /*<>*/ return display_newline(ppf, _y_); }; - /*<>*/ ppf[21] = + /*<>*/ ppf[21] = function(_y_){ - /*<>*/ return display_blanks(ppf, _y_); + /*<>*/ return display_blanks(ppf, _y_); }; - /*<>*/ ppf[22] = + /*<>*/ ppf[22] = function(_y_){ - /*<>*/ return display_blanks(ppf, _y_); + /*<>*/ return display_blanks(ppf, _y_); }; - /*<>*/ Stdlib_Domain[6].call + /*<>*/ Stdlib_Domain[6].call (null, function(_y_){ - /*<>*/ return pp_print_flush(ppf, _y_); + /*<>*/ return pp_print_flush(ppf, _y_); }); - /*<>*/ return ppf; - /*<>*/ }); - /*<>*/ caml_call2 - (Stdlib_Domain[11][3], std_formatter_key, std_formatter); + /*<>*/ return ppf; + /*<>*/ }); + /*<>*/ caml_call2 + (Stdlib_Domain[12][3], std_formatter_key, std_formatter); var err_formatter_key = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], 0, function(param){ var - _v_ = /*<>*/ Stdlib[40], + _v_ = /*<>*/ Stdlib[40], ppf = - /*<>*/ pp_make_formatter + /*<>*/ pp_make_formatter (function(_w_, _x_, _y_){ - /*<>*/ return buffered_out_string + /*<>*/ return buffered_out_string (err_buf_key, _w_, _x_, _y_); }, function(_w_){ - /*<>*/ return buffered_out_flush + /*<>*/ return buffered_out_flush (_v_, err_buf_key, _w_); }, function(_v_){ /*<>*/ return 0;}, function(_v_){return 0;}, function(_v_){return 0;}); - /*<>*/ ppf[20] = + /*<>*/ ppf[20] = function(_v_){ - /*<>*/ return display_newline(ppf, _v_); + /*<>*/ return display_newline(ppf, _v_); }; - /*<>*/ ppf[21] = + /*<>*/ ppf[21] = function(_v_){ - /*<>*/ return display_blanks(ppf, _v_); + /*<>*/ return display_blanks(ppf, _v_); }; - /*<>*/ ppf[22] = + /*<>*/ ppf[22] = function(_v_){ - /*<>*/ return display_blanks(ppf, _v_); + /*<>*/ return display_blanks(ppf, _v_); }; - /*<>*/ Stdlib_Domain[6].call + /*<>*/ Stdlib_Domain[6].call (null, function(_v_){ - /*<>*/ return pp_print_flush(ppf, _v_); + /*<>*/ return pp_print_flush(ppf, _v_); }); - /*<>*/ return ppf; - /*<>*/ }); - /*<>*/ caml_call2 - (Stdlib_Domain[11][3], err_formatter_key, err_formatter); + /*<>*/ return ppf; + /*<>*/ }); + /*<>*/ caml_call2 + (Stdlib_Domain[12][3], err_formatter_key, err_formatter); function get_std_formatter(param){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], std_formatter_key) /*<>*/ ; + /*<>*/ return caml_call1 + (Stdlib_Domain[12][2], std_formatter_key) /*<>*/ ; } function get_err_formatter(param){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], err_formatter_key) /*<>*/ ; + /*<>*/ return caml_call1 + (Stdlib_Domain[12][2], err_formatter_key) /*<>*/ ; } function get_str_formatter(param){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], str_formatter_key) /*<>*/ ; + /*<>*/ return caml_call1 + (Stdlib_Domain[12][2], str_formatter_key) /*<>*/ ; } function get_stdbuf(param){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], stdbuf_key) /*<>*/ ; + /*<>*/ return caml_call1 + (Stdlib_Domain[12][2], stdbuf_key) /*<>*/ ; } function flush_buffer_formatter(buf, ppf){ - /*<>*/ pp_flush_queue(ppf, 0); - var s = /*<>*/ Stdlib_Buffer[2].call(null, buf); - /*<>*/ Stdlib_Buffer[9].call(null, buf); - /*<>*/ return s; - /*<>*/ } + /*<>*/ pp_flush_queue(ppf, 0); + var s = /*<>*/ Stdlib_Buffer[2].call(null, buf); + /*<>*/ Stdlib_Buffer[9].call(null, buf); + /*<>*/ return s; + /*<>*/ } function flush_str_formatter(param){ var stdbuf = - /*<>*/ caml_call1(Stdlib_Domain[11][2], stdbuf_key), + /*<>*/ caml_call1(Stdlib_Domain[12][2], stdbuf_key), str_formatter = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], str_formatter_key); - /*<>*/ return flush_buffer_formatter - (stdbuf, str_formatter) /*<>*/ ; + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], str_formatter_key); + /*<>*/ return flush_buffer_formatter + (stdbuf, str_formatter) /*<>*/ ; } function make_synchronized_formatter(output, flush){ - /*<>*/ return caml_call2 - (Stdlib_Domain[11][1], + /*<>*/ return caml_call2 + (Stdlib_Domain[12][1], 0, function(param){ var buf = - /*<>*/ Stdlib_Buffer[1].call + /*<>*/ Stdlib_Buffer[1].call (null, pp_buffer_size), - _s_ = /*<>*/ Stdlib_Buffer[18]; + _s_ = /*<>*/ Stdlib_Buffer[18]; function output$0(_t_, _u_, _v_){ - /*<>*/ return _s_(buf, _t_, _u_, _v_); + /*<>*/ return _s_(buf, _t_, _u_, _v_); } function flush$0(_s_){ - /*<>*/ _s_ = + /*<>*/ _s_ = Stdlib_Buffer[7].call(null, buf); - /*<>*/ /*<>*/ caml_call3 + /*<>*/ /*<>*/ caml_call3 (output, - /*<>*/ Stdlib_Buffer[2].call(null, buf), + /*<>*/ Stdlib_Buffer[2].call(null, buf), 0, _s_); - /*<>*/ Stdlib_Buffer[8].call(null, buf); - /*<>*/ return caml_call1(flush, 0) /*<>*/ ; + /*<>*/ Stdlib_Buffer[8].call(null, buf); + /*<>*/ return caml_call1(flush, 0) /*<>*/ ; } - /*<>*/ return make_formatter - (output$0, flush$0) /*<>*/ ; - }) /*<>*/ ; + /*<>*/ return make_formatter + (output$0, flush$0) /*<>*/ ; + }) /*<>*/ ; } function synchronized_formatter_of_out_(oc){ - var _p_ = /*<>*/ Stdlib[69]; - /*<>*/ return make_synchronized_formatter + var _p_ = /*<>*/ Stdlib[69]; + /*<>*/ return make_synchronized_formatter (function(_q_, _r_, _s_){ - /*<>*/ return _p_(oc, _q_, _r_, _s_); + /*<>*/ return _p_(oc, _q_, _r_, _s_); }, function(param){ - /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; - }) /*<>*/ ; + /*<>*/ return Stdlib[63].call(null, oc) /*<>*/ ; + }) /*<>*/ ; } - function make_symbolic_output_buffer(param){ /*<>*/ return [0, 0]; - /*<>*/ } + function make_symbolic_output_buffer(param){ /*<>*/ return [0, 0]; + /*<>*/ } function clear_symbolic_output_buffer(sob){ - /*<>*/ sob[1] = 0; + /*<>*/ sob[1] = 0; return 0; - /*<>*/ } + /*<>*/ } function get_symbolic_output_buffer(sob){ - /*<>*/ return Stdlib_List[11].call(null, sob[1]) /*<>*/ ; + /*<>*/ return Stdlib_List[11].call(null, sob[1]) /*<>*/ ; } function flush_symbolic_output_buffer(sob){ - var items = /*<>*/ get_symbolic_output_buffer(sob); - /*<>*/ clear_symbolic_output_buffer(sob); - /*<>*/ return items; - /*<>*/ } + var items = /*<>*/ get_symbolic_output_buffer(sob); + /*<>*/ clear_symbolic_output_buffer(sob); + /*<>*/ return items; + /*<>*/ } function add_symbolic_output_item(sob, item){ - /*<>*/ sob[1] = [0, item, sob[1]]; + /*<>*/ sob[1] = [0, item, sob[1]]; return 0; - /*<>*/ } + /*<>*/ } function formatter_of_symbolic_output_b(sob){ function f(s, i, n){ - /*<>*/ return /*<>*/ add_symbolic_output_item + /*<>*/ return /*<>*/ add_symbolic_output_item (sob, [0, - /*<>*/ Stdlib_String[16].call - (null, s, i, n)]) /*<>*/ ; + /*<>*/ Stdlib_String[19].call + (null, s, i, n)]) /*<>*/ ; } function g(param){ - /*<>*/ return add_symbolic_output_item(sob, 0); + /*<>*/ return add_symbolic_output_item(sob, 0); } function h(param){ - /*<>*/ return add_symbolic_output_item(sob, 1); + /*<>*/ return add_symbolic_output_item(sob, 1); } function i(n){ - /*<>*/ return add_symbolic_output_item(sob, [1, n]); + /*<>*/ return add_symbolic_output_item(sob, [1, n]); } function j(n){ - /*<>*/ return add_symbolic_output_item(sob, [2, n]); + /*<>*/ return add_symbolic_output_item(sob, [2, n]); } - /*<>*/ return pp_make_formatter(f, g, h, i, j) /*<>*/ ; + /*<>*/ return pp_make_formatter(f, g, h, i, j) /*<>*/ ; } function open_hbox(v){ - /*<>*/ return /*<>*/ pp_open_hbox - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_open_hbox + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function open_vbox(v){ - /*<>*/ return /*<>*/ pp_open_vbox - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_open_vbox + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function open_hvbox(v){ - /*<>*/ return /*<>*/ pp_open_hvbox - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_open_hvbox + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function open_hovbox(v){ - /*<>*/ return /*<>*/ pp_open_hovbox - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_open_hovbox + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function open_box(v){ - /*<>*/ return /*<>*/ pp_open_box - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_open_box + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function close_box(v){ - /*<>*/ return /*<>*/ pp_close_box - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_close_box + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function open_stag(v){ - /*<>*/ return /*<>*/ pp_open_stag - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_open_stag + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function close_stag(v){ - /*<>*/ return /*<>*/ pp_close_stag - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_close_stag + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_as(isize, w){ var state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return pp_print_as_size(state, isize, w) /*<>*/ ; + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key); + /*<>*/ return pp_print_as_size(state, isize, w) /*<>*/ ; } function print_string(v){ - /*<>*/ return /*<>*/ pp_print_string - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_string + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_substring(pos, len, v){ - /*<>*/ return /*<>*/ pp_print_substring + /*<>*/ return /*<>*/ pp_print_substring (pos, len, - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_substring_as(pos, len, as_len, v){ - /*<>*/ return /*<>*/ pp_print_substring_as + /*<>*/ return /*<>*/ pp_print_substring_as (pos, len, - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), as_len, - v) /*<>*/ ; + v) /*<>*/ ; } function print_bytes(v){ - /*<>*/ return /*<>*/ pp_print_bytes - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_bytes + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_int(v){ - /*<>*/ return /*<>*/ pp_print_int - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_int + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_float(v){ - /*<>*/ return /*<>*/ pp_print_float - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_float + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_char(v){ - /*<>*/ return /*<>*/ pp_print_char - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_char + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_bool(v){ - /*<>*/ return /*<>*/ pp_print_bool - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_bool + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_break(v, w){ - /*<>*/ return /*<>*/ pp_print_break - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), + /*<>*/ return /*<>*/ pp_print_break + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), v, - w) /*<>*/ ; + w) /*<>*/ ; } function print_cut(v){ - /*<>*/ return /*<>*/ pp_print_cut - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_cut + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_space(v){ - /*<>*/ return /*<>*/ pp_print_space - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_space + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function force_newline(v){ - /*<>*/ return /*<>*/ pp_force_newline - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_force_newline + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_flush(v){ - /*<>*/ return /*<>*/ pp_print_flush - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_flush + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_newline(v){ - /*<>*/ return /*<>*/ pp_print_newline - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_newline + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_if_newline(v){ - /*<>*/ return /*<>*/ pp_print_if_newline - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_if_newline + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function open_tbox(v){ - /*<>*/ return /*<>*/ pp_open_tbox - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_open_tbox + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function close_tbox(v){ - /*<>*/ return /*<>*/ pp_close_tbox - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_close_tbox + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_tbreak(v, w){ - /*<>*/ return /*<>*/ pp_print_tbreak - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), + /*<>*/ return /*<>*/ pp_print_tbreak + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), v, - w) /*<>*/ ; + w) /*<>*/ ; } function set_tab(v){ - /*<>*/ return /*<>*/ pp_set_tab - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_tab + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function print_tab(v){ - /*<>*/ return /*<>*/ pp_print_tab - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_tab + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function set_margin(v){ - /*<>*/ return /*<>*/ pp_set_margin - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_margin + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_margin(v){ var state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[6]; - /*<>*/ } + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key); + /*<>*/ return state[6]; + /*<>*/ } function set_max_indent(v){ - /*<>*/ return /*<>*/ pp_set_max_indent - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_max_indent + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_max_indent(v){ var state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[8]; - /*<>*/ } + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key); + /*<>*/ return state[8]; + /*<>*/ } function set_geometry(max_indent, margin){ - /*<>*/ return /*<>*/ pp_set_geometry - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), + /*<>*/ return /*<>*/ pp_set_geometry + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), max_indent, - margin) /*<>*/ ; + margin) /*<>*/ ; } function safe_set_geometry(max_indent, margin){ - /*<>*/ return /*<>*/ pp_safe_set_geometry - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), + /*<>*/ return /*<>*/ pp_safe_set_geometry + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), max_indent, - margin) /*<>*/ ; + margin) /*<>*/ ; } function get_geometry(v){ - /*<>*/ return /*<>*/ pp_get_geometry - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_get_geometry + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function update_geometry(v){ - /*<>*/ return /*<>*/ pp_update_geometry - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_update_geometry + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function set_max_boxes(v){ - /*<>*/ return /*<>*/ pp_set_max_boxes - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_max_boxes + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_max_boxes(v){ var state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[15]; - /*<>*/ } + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key); + /*<>*/ return state[15]; + /*<>*/ } function over_max_boxes(v){ - /*<>*/ return /*<>*/ pp_over_max_boxes - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_over_max_boxes + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function set_ellipsis_text(v){ - /*<>*/ return /*<>*/ pp_set_ellipsis_text - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_ellipsis_text + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_ellipsis_text(v){ var state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[16]; - /*<>*/ } + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key); + /*<>*/ return state[16]; + /*<>*/ } function set_formatter_out_channel(v){ - /*<>*/ return /*<>*/ pp_set_formatter_out_channel - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_formatter_out_channel + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function set_formatter_out_functions(v){ - /*<>*/ return /*<>*/ pp_set_formatter_out_functions - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_formatter_out_functions + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_formatter_out_functions(v){ - /*<>*/ return /*<>*/ pp_get_formatter_out_functions - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_get_formatter_out_functions + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function set_formatter_output_functions(v, w){ - /*<>*/ return /*<>*/ pp_set_formatter_output_functi - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), + /*<>*/ return /*<>*/ pp_set_formatter_output_functi + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), v, - w) /*<>*/ ; + w) /*<>*/ ; } function get_formatter_output_functions(v){ - /*<>*/ return /*<>*/ pp_get_formatter_output_functi - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_get_formatter_output_functi + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function set_formatter_stag_functions(v){ - /*<>*/ return /*<>*/ pp_set_formatter_stag_function - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_formatter_stag_function + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_formatter_stag_functions(v){ - /*<>*/ return /*<>*/ pp_get_formatter_stag_function - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_get_formatter_stag_function + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function set_print_tags(v){ - /*<>*/ return /*<>*/ pp_set_print_tags - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_print_tags + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_print_tags(v){ var state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[23]; - /*<>*/ } + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key); + /*<>*/ return state[23]; + /*<>*/ } function set_mark_tags(v){ - /*<>*/ return /*<>*/ pp_set_mark_tags - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_mark_tags + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function get_mark_tags(v){ var state = - /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key); - /*<>*/ return state[24]; - /*<>*/ } + /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key); + /*<>*/ return state[24]; + /*<>*/ } function set_tags(v){ - /*<>*/ return /*<>*/ pp_set_tags - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - v) /*<>*/ ; + /*<>*/ return /*<>*/ pp_set_tags + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + v) /*<>*/ ; } function pp_print_iter(opt, iter, pp_v, ppf, v){ var - pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut, - is_first = /*<>*/ [0, 1]; + pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut, + is_first = /*<>*/ [0, 1]; function pp_v$0(v){ - /*<>*/ if(is_first[1]) - /*<>*/ is_first[1] = 0; + /*<>*/ if(is_first[1]) + /*<>*/ is_first[1] = 0; else - /*<>*/ caml_call2(pp_sep, ppf, 0); - /*<>*/ return caml_call2(pp_v, ppf, v) /*<>*/ ; + /*<>*/ caml_call2(pp_sep, ppf, 0); + /*<>*/ return caml_call2(pp_v, ppf, v) /*<>*/ ; } - /*<>*/ return caml_call2(iter, pp_v$0, v) /*<>*/ ; + /*<>*/ return caml_call2(iter, pp_v$0, v) /*<>*/ ; } function pp_print_list(opt, pp_v, ppf, v){ - var pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut; - /*<>*/ return pp_print_iter - ([0, pp_sep], Stdlib_List[19], pp_v, ppf, v) /*<>*/ ; + var pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut; + /*<>*/ return pp_print_iter + ([0, pp_sep], Stdlib_List[19], pp_v, ppf, v) /*<>*/ ; } function pp_print_array(opt, pp_v, ppf, v){ - var pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut; - /*<>*/ return pp_print_iter - ([0, pp_sep], Stdlib_Array[14], pp_v, ppf, v) /*<>*/ ; + var pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut; + /*<>*/ return pp_print_iter + ([0, pp_sep], Stdlib_Array[14], pp_v, ppf, v) /*<>*/ ; } function pp_print_seq(opt, pp_v, ppf, seq){ - var pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut; - /*<>*/ return pp_print_iter - ([0, pp_sep], Stdlib_Seq[4], pp_v, ppf, seq) /*<>*/ ; + var pp_sep = /*<>*/ opt ? opt[1] : pp_print_cut; + /*<>*/ return pp_print_iter + ([0, pp_sep], Stdlib_Seq[4], pp_v, ppf, seq) /*<>*/ ; } function pp_print_text(ppf, s){ var - len = /*<>*/ caml_ml_string_length(s), - left = /*<>*/ [0, 0], - right = /*<>*/ [0, 0]; + len = /*<>*/ caml_ml_string_length(s), + left = /*<>*/ [0, 0], + right = /*<>*/ [0, 0]; function flush(param){ - /*<>*/ pp_print_substring + /*<>*/ pp_print_substring (left[1], right[1] - left[1] | 0, ppf, s); - /*<>*/ right[1]++; - /*<>*/ left[1] = right[1]; + /*<>*/ right[1]++; + /*<>*/ left[1] = right[1]; return 0; - /*<>*/ } - /*<>*/ for(;;){ + /*<>*/ } + /*<>*/ for(;;){ if(right[1] === len){ - var _p_ = /*<>*/ left[1] !== len ? 1 : 0; - return _p_ ? /*<>*/ flush(0) : _p_ /*<>*/ ; + var _p_ = /*<>*/ left[1] !== len ? 1 : 0; + return _p_ ? /*<>*/ flush(0) : _p_ /*<>*/ ; } - /*<>*/ _p_ = caml_string_get(s, right[1]); - /*<>*/ if(10 === _p_){ - /*<>*/ flush(0); - /*<>*/ pp_force_newline(ppf, 0); + /*<>*/ _p_ = caml_string_get(s, right[1]); + /*<>*/ if(10 === _p_){ + /*<>*/ flush(0); + /*<>*/ pp_force_newline(ppf, 0); } else if(32 === _p_){ - /*<>*/ flush(0); - /*<>*/ pp_print_space(ppf, 0); + /*<>*/ flush(0); + /*<>*/ pp_print_space(ppf, 0); } else - /*<>*/ right[1]++; + /*<>*/ right[1]++; } - /*<>*/ } + /*<>*/ } function format_text(fmt6){ - var fmt = /*<>*/ fmt6[1]; + var fmt = /*<>*/ fmt6[1]; function skip_and_count_whites(spaces$1, newlines$1, len, s, pos$2){ var - spaces = /*<>*/ spaces$1, + spaces = /*<>*/ spaces$1, newlines = newlines$1, pos = pos$2; for(;;){ if(len <= pos) - /*<>*/ return [0, pos, spaces, newlines]; - var match = /*<>*/ caml_string_get(s, pos); - /*<>*/ if(10 === match){ + /*<>*/ return [0, pos, spaces, newlines]; + var match = /*<>*/ caml_string_get(s, pos); + /*<>*/ if(10 === match){ var - pos$0 = /*<>*/ 1 + pos | 0, + pos$0 = /*<>*/ 1 + pos | 0, newlines$0 = 1 + newlines | 0; newlines = newlines$0; pos = pos$0; } else{ - /*<>*/ if(32 !== match) - /*<>*/ return [0, pos, spaces, newlines]; + /*<>*/ if(32 !== match) + /*<>*/ return [0, pos, spaces, newlines]; var - pos$1 = /*<>*/ 1 + pos | 0, + pos$1 = /*<>*/ 1 + pos | 0, spaces$0 = 1 + spaces | 0; spaces = spaces$0; pos = pos$1; } } - /*<>*/ } + /*<>*/ } function concat(s, fmt){ - var variant = /*<>*/ s[1]; + var variant = /*<>*/ s[1]; if(748194550 <= variant){ var c = s[2]; - if(10 !== c && 32 !== c) /*<>*/ return [12, c, fmt]; - /*<>*/ return [17, [0, cst, 1, 0], fmt]; + if(10 !== c && 32 !== c) /*<>*/ return [12, c, fmt]; + /*<>*/ return [17, [0, cst, 1, 0], fmt]; } var - s$0 = /*<>*/ s[2], - len = /*<>*/ caml_ml_string_length(s$0); - /*<>*/ if(len <= 0) - /*<>*/ return fmt; + s$0 = /*<>*/ s[2], + len = /*<>*/ caml_ml_string_length(s$0); + /*<>*/ if(len <= 0) + /*<>*/ return fmt; var - pos$1 = /*<>*/ 0, + pos$1 = /*<>*/ 0, space = - /*<>*/ Stdlib_String[33].call + /*<>*/ Stdlib_String[54].call (null, s$0, pos$1, 32), newline = - /*<>*/ Stdlib_String[33].call + /*<>*/ Stdlib_String[54].call (null, s$0, pos$1, 10); - /*<>*/ if(space) + /*<>*/ if(space) if(newline) var y = newline[1], x = space[1], first = - /*<>*/ [0, - /*<>*/ Stdlib[16].call(null, x, y)]; + /*<>*/ [0, + /*<>*/ Stdlib[16].call(null, x, y)]; else - /*<>*/ first = space; + /*<>*/ first = space; else first = newline; - /*<>*/ if(! first) - /*<>*/ return [11, - Stdlib_String[16].call(null, s$0, pos$1, len - 0 | 0), - fmt] /*<>*/ ; + /*<>*/ if(! first) + /*<>*/ return [11, + Stdlib_String[19].call(null, s$0, pos$1, len - 0 | 0), + fmt] /*<>*/ ; var - sep = /*<>*/ first[1], + sep = /*<>*/ first[1], before = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, s$0, pos$1, sep - 0 | 0), _p_ = - /*<>*/ skip_and_count_whites(0, 0, len, s$0, sep), - newlines = /*<>*/ _p_[3], + /*<>*/ skip_and_count_whites(0, 0, len, s$0, sep), + newlines = /*<>*/ _p_[3], spaces = _p_[2], pos = _p_[1]; - /*<>*/ if(1 < newlines >>> 0) - var break$ = /*<>*/ 3, repeat = newlines; + /*<>*/ if(1 < newlines >>> 0) + var break$ = /*<>*/ 3, repeat = newlines; else var break$0 = - /*<>*/ [0, + /*<>*/ [0, cst, Stdlib[17].call(null, spaces, 1), 0], - break$ = /*<>*/ break$0, + break$ = /*<>*/ break$0, repeat = 1; var - pos$2 = /*<>*/ pos, + pos$2 = /*<>*/ pos, break$3 = break$, repeat$3 = repeat, offset$0 = 1, - block = /*<>*/ [11, before, 24029], - dst$2 = /*<>*/ block; + block = /*<>*/ [11, before, 24029], + dst$2 = /*<>*/ block; for(;;){ var - dst$0 = /*<>*/ dst$2, + dst$0 = /*<>*/ dst$2, offset = offset$0, repeat$1 = repeat$3; for(;;){ if(0 === repeat$1) break; - var dst$1 = /*<>*/ [17, break$3, 24029]; + var dst$1 = /*<>*/ [17, break$3, 24029]; dst$0[offset + 1] = dst$1; var repeat$2 = repeat$1 - 1 | 0; dst$0 = dst$1; offset = 1; repeat$1 = repeat$2; } - /*<>*/ if(len <= pos$2) - /*<>*/ dst$0[offset + 1] = fmt; + /*<>*/ if(len <= pos$2) + /*<>*/ dst$0[offset + 1] = fmt; else{ var space$0 = - /*<>*/ Stdlib_String[33].call + /*<>*/ Stdlib_String[54].call (null, s$0, pos$2, 32), newline$0 = - /*<>*/ Stdlib_String[33].call + /*<>*/ Stdlib_String[54].call (null, s$0, pos$2, 10); - /*<>*/ if(space$0) + /*<>*/ if(space$0) if(newline$0) var y$0 = newline$0[1], x$0 = space$0[1], first$0 = - /*<>*/ [0, - /*<>*/ Stdlib[16].call(null, x$0, y$0)]; + /*<>*/ [0, + /*<>*/ Stdlib[16].call(null, x$0, y$0)]; else - /*<>*/ first$0 = space$0; + /*<>*/ first$0 = space$0; else first$0 = newline$0; - /*<>*/ if(first$0){ + /*<>*/ if(first$0){ var sep$0 = first$0[1], before$0 = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, s$0, pos$2, sep$0 - pos$2 | 0), _p_ = - /*<>*/ skip_and_count_whites + /*<>*/ skip_and_count_whites (0, 0, len, s$0, sep$0), - newlines$0 = /*<>*/ _p_[3], + newlines$0 = /*<>*/ _p_[3], spaces$0 = _p_[2], pos$0 = _p_[1]; - /*<>*/ if(1 < newlines$0 >>> 0) - var break$1 = /*<>*/ 3, repeat$0 = newlines$0; + /*<>*/ if(1 < newlines$0 >>> 0) + var break$1 = /*<>*/ 3, repeat$0 = newlines$0; else var break$2 = - /*<>*/ [0, + /*<>*/ [0, cst, Stdlib[17].call(null, spaces$0, 1), 0], - break$1 = /*<>*/ break$2, + break$1 = /*<>*/ break$2, repeat$0 = 1; var dst = [11, before$0, 24029]; dst$0[offset + 1] = dst; @@ -28380,127 +30159,127 @@ dst$2 = dst; continue; } - /*<>*/ dst$0[offset + 1] = - [11, Stdlib_String[16].call(null, s$0, pos$2, len - pos$2 | 0), fmt]; + /*<>*/ dst$0[offset + 1] = + [11, Stdlib_String[19].call(null, s$0, pos$2, len - pos$2 | 0), fmt]; } - /*<>*/ return block; + /*<>*/ return block; } - /*<>*/ } + /*<>*/ } var fmt$0 = - /*<>*/ CamlinternalFormatBasics[4].call + /*<>*/ CamlinternalFormatBasics[4].call (null, [0, concat], fmt); - /*<>*/ return [0, + /*<>*/ return [0, fmt$0, - CamlinternalFormat[19].call(null, fmt$0)] /*<>*/ ; - /*<>*/ } + CamlinternalFormat[21].call(null, fmt$0)] /*<>*/ ; + /*<>*/ } function pp_print_option(opt, pp_v, ppf, param){ var none = - /*<>*/ opt + /*<>*/ opt ? opt[1] : function (_p_, param){ - /*<>*/ return 0; - /*<>*/ }; - /*<>*/ if(! param) - /*<>*/ return caml_call2(none, ppf, 0) /*<>*/ ; - var v = /*<>*/ param[1]; - /*<>*/ return caml_call2(pp_v, ppf, v) /*<>*/ ; + /*<>*/ return 0; + /*<>*/ }; + /*<>*/ if(! param) + /*<>*/ return caml_call2(none, ppf, 0) /*<>*/ ; + var v = /*<>*/ param[1]; + /*<>*/ return caml_call2(pp_v, ppf, v) /*<>*/ ; } function pp_print_result(ok, error, ppf, param){ - /*<>*/ if(0 === param[0]){ + /*<>*/ if(0 === param[0]){ var v = param[1]; - /*<>*/ return caml_call2(ok, ppf, v) /*<>*/ ; + /*<>*/ return caml_call2(ok, ppf, v) /*<>*/ ; } - var e = /*<>*/ param[1]; - /*<>*/ return caml_call2(error, ppf, e) /*<>*/ ; + var e = /*<>*/ param[1]; + /*<>*/ return caml_call2(error, ppf, e) /*<>*/ ; } function pp_print_either(left, right, ppf, param){ - /*<>*/ if(0 === param[0]){ + /*<>*/ if(0 === param[0]){ var l = param[1]; - /*<>*/ return caml_call2(left, ppf, l) /*<>*/ ; + /*<>*/ return caml_call2(left, ppf, l) /*<>*/ ; } - var r = /*<>*/ param[1]; - /*<>*/ return caml_call2(right, ppf, r) /*<>*/ ; + var r = /*<>*/ param[1]; + /*<>*/ return caml_call2(right, ppf, r) /*<>*/ ; } function compute_tag(output, tag_acc){ var - buf = /*<>*/ Stdlib_Buffer[1].call(null, 16), - ppf = /*<>*/ formatter_of_buffer(buf); - /*<>*/ caml_call2(output, ppf, tag_acc); - /*<>*/ pp_print_flush(ppf, 0); - var len = /*<>*/ Stdlib_Buffer[7].call(null, buf); - /*<>*/ return 2 <= len - ? /*<>*/ Stdlib_Buffer + buf = /*<>*/ Stdlib_Buffer[1].call(null, 16), + ppf = /*<>*/ formatter_of_buffer(buf); + /*<>*/ caml_call2(output, ppf, tag_acc); + /*<>*/ pp_print_flush(ppf, 0); + var len = /*<>*/ Stdlib_Buffer[7].call(null, buf); + /*<>*/ return 2 <= len + ? /*<>*/ Stdlib_Buffer [4].call (null, buf, 1, len - 2 | 0) - : /*<>*/ Stdlib_Buffer[2].call(null, buf) /*<>*/ ; + : /*<>*/ Stdlib_Buffer[2].call(null, buf) /*<>*/ ; } function output_formatting_lit(ppf, fmting_lit){ - /*<>*/ if(typeof fmting_lit === "number") + /*<>*/ if(typeof fmting_lit === "number") switch(fmting_lit){ case 0: - /*<>*/ return pp_close_box(ppf, 0) /*<>*/ ; + /*<>*/ return pp_close_box(ppf, 0) /*<>*/ ; case 1: - /*<>*/ return pp_close_stag(ppf, 0) /*<>*/ ; + /*<>*/ return pp_close_stag(ppf, 0) /*<>*/ ; case 2: - /*<>*/ return pp_print_flush(ppf, 0) /*<>*/ ; + /*<>*/ return pp_print_flush(ppf, 0) /*<>*/ ; case 3: - /*<>*/ return pp_force_newline(ppf, 0) /*<>*/ ; + /*<>*/ return pp_force_newline(ppf, 0) /*<>*/ ; case 4: - /*<>*/ return pp_print_newline(ppf, 0) /*<>*/ ; + /*<>*/ return pp_print_newline(ppf, 0) /*<>*/ ; case 5: - /*<>*/ return pp_print_char(ppf, 64) /*<>*/ ; + /*<>*/ return pp_print_char(ppf, 64) /*<>*/ ; default: - /*<>*/ return pp_print_char(ppf, 37) /*<>*/ ; + /*<>*/ return pp_print_char(ppf, 37) /*<>*/ ; } - /*<>*/ switch(fmting_lit[0]){ + /*<>*/ switch(fmting_lit[0]){ case 0: var offset = fmting_lit[3], width = fmting_lit[2]; - /*<>*/ return pp_print_break(ppf, width, offset) /*<>*/ ; + /*<>*/ return pp_print_break(ppf, width, offset) /*<>*/ ; case 1: - /*<>*/ return 0; + /*<>*/ return 0; default: - var c = /*<>*/ fmting_lit[1]; - /*<>*/ pp_print_char(ppf, 64); - /*<>*/ return pp_print_char(ppf, c) /*<>*/ ; + var c = /*<>*/ fmting_lit[1]; + /*<>*/ pp_print_char(ppf, 64); + /*<>*/ return pp_print_char(ppf, c) /*<>*/ ; } } function output_acc(ppf, acc){ - /*<>*/ if(typeof acc === "number") - /*<>*/ return 0; + /*<>*/ if(typeof acc === "number") + /*<>*/ return 0; a: { b: { c: { - /*<>*/ switch(acc[0]){ + /*<>*/ switch(acc[0]){ case 0: var f = acc[2], p = acc[1]; - /*<>*/ output_acc(ppf, p); - /*<>*/ return output_formatting_lit(ppf, f) /*<>*/ ; + /*<>*/ output_acc(ppf, p); + /*<>*/ return output_formatting_lit(ppf, f) /*<>*/ ; case 1: - var _o_ = /*<>*/ acc[2], p$0 = acc[1]; + var _o_ = /*<>*/ acc[2], p$0 = acc[1]; if(0 === _o_[0]){ var acc$0 = _o_[1]; - /*<>*/ output_acc(ppf, p$0); - /*<>*/ return /*<>*/ pp_open_stag + /*<>*/ output_acc(ppf, p$0); + /*<>*/ return /*<>*/ pp_open_stag (ppf, [0, String_tag, - /*<>*/ compute_tag(output_acc, acc$0)]) /*<>*/ ; + /*<>*/ compute_tag(output_acc, acc$0)]) /*<>*/ ; } - var acc$1 = /*<>*/ _o_[1]; - /*<>*/ output_acc(ppf, p$0); - /*<>*/ _o_ = compute_tag(output_acc, acc$1); - /*<>*/ _o_ = - CamlinternalFormat[20].call(null, _o_); - var bty = /*<>*/ _o_[2], indent = _o_[1]; - /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; + var acc$1 = /*<>*/ _o_[1]; + /*<>*/ output_acc(ppf, p$0); + /*<>*/ _o_ = compute_tag(output_acc, acc$1); + /*<>*/ _o_ = + CamlinternalFormat[22].call(null, _o_); + var bty = /*<>*/ _o_[2], indent = _o_[1]; + /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; case 2: - /*<>*/ _o_ = acc[1]; + /*<>*/ _o_ = acc[1]; if(typeof _o_ !== "number" && 0 === _o_[0]){ var _p_ = _o_[2]; if(typeof _p_ !== "number" && 1 === _p_[0]){ @@ -28551,66 +30330,66 @@ break; case 6: var f$0 = acc[2], p$5 = acc[1]; - /*<>*/ output_acc(ppf, p$5); - /*<>*/ return caml_call1(f$0, ppf) /*<>*/ ; + /*<>*/ output_acc(ppf, p$5); + /*<>*/ return caml_call1(f$0, ppf) /*<>*/ ; case 7: - var p$6 = /*<>*/ acc[1]; - /*<>*/ output_acc(ppf, p$6); - /*<>*/ return pp_print_flush(ppf, 0) /*<>*/ ; + var p$6 = /*<>*/ acc[1]; + /*<>*/ output_acc(ppf, p$6); + /*<>*/ return pp_print_flush(ppf, 0) /*<>*/ ; default: - var msg = /*<>*/ acc[2], p$7 = acc[1]; - /*<>*/ output_acc(ppf, p$7); - /*<>*/ return Stdlib[1].call(null, msg) /*<>*/ ; + var msg = /*<>*/ acc[2], p$7 = acc[1]; + /*<>*/ output_acc(ppf, p$7); + /*<>*/ return Stdlib[1].call(null, msg) /*<>*/ ; } - /*<>*/ output_acc(ppf, p$3); - /*<>*/ return pp_print_char(ppf, c) /*<>*/ ; + /*<>*/ output_acc(ppf, p$3); + /*<>*/ return pp_print_char(ppf, c) /*<>*/ ; } - /*<>*/ output_acc(ppf, p$4); - /*<>*/ return /*<>*/ pp_print_as_size + /*<>*/ output_acc(ppf, p$4); + /*<>*/ return /*<>*/ pp_print_as_size (ppf, size$0, - /*<>*/ Stdlib_String[1].call(null, 1, c$0)) /*<>*/ ; + /*<>*/ Stdlib_String[1].call(null, 1, c$0)) /*<>*/ ; } - /*<>*/ output_acc(ppf, p$1); - /*<>*/ return pp_print_string(ppf, s) /*<>*/ ; + /*<>*/ output_acc(ppf, p$1); + /*<>*/ return pp_print_string(ppf, s) /*<>*/ ; } - /*<>*/ output_acc(ppf, p$2); - /*<>*/ return pp_print_as_size(ppf, size, s$0) /*<>*/ ; + /*<>*/ output_acc(ppf, p$2); + /*<>*/ return pp_print_as_size(ppf, size, s$0) /*<>*/ ; } function strput_acc(ppf, acc){ - /*<>*/ if(typeof acc === "number") - /*<>*/ return 0; + /*<>*/ if(typeof acc === "number") + /*<>*/ return 0; a: { b: { c: { - /*<>*/ switch(acc[0]){ + /*<>*/ switch(acc[0]){ case 0: var f = acc[2], p = acc[1]; - /*<>*/ strput_acc(ppf, p); - /*<>*/ return output_formatting_lit(ppf, f) /*<>*/ ; + /*<>*/ strput_acc(ppf, p); + /*<>*/ return output_formatting_lit(ppf, f) /*<>*/ ; case 1: - var _n_ = /*<>*/ acc[2], p$0 = acc[1]; + var _n_ = /*<>*/ acc[2], p$0 = acc[1]; if(0 === _n_[0]){ var acc$0 = _n_[1]; - /*<>*/ strput_acc(ppf, p$0); - /*<>*/ return /*<>*/ pp_open_stag + /*<>*/ strput_acc(ppf, p$0); + /*<>*/ return /*<>*/ pp_open_stag (ppf, [0, String_tag, - /*<>*/ compute_tag(strput_acc, acc$0)]) /*<>*/ ; + /*<>*/ compute_tag(strput_acc, acc$0)]) /*<>*/ ; } - var acc$1 = /*<>*/ _n_[1]; - /*<>*/ strput_acc(ppf, p$0); - /*<>*/ _n_ = compute_tag(strput_acc, acc$1); - /*<>*/ _n_ = - CamlinternalFormat[20].call(null, _n_); - var bty = /*<>*/ _n_[2], indent = _n_[1]; - /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; + var acc$1 = /*<>*/ _n_[1]; + /*<>*/ strput_acc(ppf, p$0); + /*<>*/ _n_ = compute_tag(strput_acc, acc$1); + /*<>*/ _n_ = + CamlinternalFormat[22].call(null, _n_); + var bty = /*<>*/ _n_[2], indent = _n_[1]; + /*<>*/ return pp_open_box_gen(ppf, indent, bty) /*<>*/ ; case 2: - /*<>*/ _n_ = acc[1]; + /*<>*/ _n_ = acc[1]; if(typeof _n_ !== "number" && 0 === _n_[0]){ var _o_ = _n_[2]; if(typeof _o_ !== "number" && 1 === _o_[0]){ @@ -28665,174 +30444,214 @@ _n_ = p$5[2]; if(typeof _n_ !== "number" && 1 === _n_[0]){ var f$1 = acc[2], size$1 = _n_[2], p$6 = p$5[1]; - /*<>*/ strput_acc(ppf, p$6); - /*<>*/ return /*<>*/ pp_print_as_size - (ppf, size$1, /*<>*/ caml_call1(f$1, 0)) /*<>*/ ; + /*<>*/ strput_acc(ppf, p$6); + /*<>*/ return /*<>*/ pp_print_as_size + (ppf, size$1, /*<>*/ caml_call1(f$1, 0)) /*<>*/ ; } } - var f$0 = /*<>*/ acc[2]; - /*<>*/ strput_acc(ppf, p$5); - /*<>*/ return /*<>*/ pp_print_string - (ppf, /*<>*/ caml_call1(f$0, 0)) /*<>*/ ; + var f$0 = /*<>*/ acc[2]; + /*<>*/ strput_acc(ppf, p$5); + /*<>*/ return /*<>*/ pp_print_string + (ppf, /*<>*/ caml_call1(f$0, 0)) /*<>*/ ; case 7: - var p$7 = /*<>*/ acc[1]; - /*<>*/ strput_acc(ppf, p$7); - /*<>*/ return pp_print_flush(ppf, 0) /*<>*/ ; + var p$7 = /*<>*/ acc[1]; + /*<>*/ strput_acc(ppf, p$7); + /*<>*/ return pp_print_flush(ppf, 0) /*<>*/ ; default: - var msg = /*<>*/ acc[2], p$8 = acc[1]; - /*<>*/ strput_acc(ppf, p$8); - /*<>*/ return Stdlib[1].call(null, msg) /*<>*/ ; + var msg = /*<>*/ acc[2], p$8 = acc[1]; + /*<>*/ strput_acc(ppf, p$8); + /*<>*/ return Stdlib[1].call(null, msg) /*<>*/ ; } - /*<>*/ strput_acc(ppf, p$3); - /*<>*/ return pp_print_char(ppf, c) /*<>*/ ; + /*<>*/ strput_acc(ppf, p$3); + /*<>*/ return pp_print_char(ppf, c) /*<>*/ ; } - /*<>*/ strput_acc(ppf, p$4); - /*<>*/ return /*<>*/ pp_print_as_size + /*<>*/ strput_acc(ppf, p$4); + /*<>*/ return /*<>*/ pp_print_as_size (ppf, size$0, - /*<>*/ Stdlib_String[1].call(null, 1, c$0)) /*<>*/ ; + /*<>*/ Stdlib_String[1].call(null, 1, c$0)) /*<>*/ ; } - /*<>*/ strput_acc(ppf, p$1); - /*<>*/ return pp_print_string(ppf, s) /*<>*/ ; + /*<>*/ strput_acc(ppf, p$1); + /*<>*/ return pp_print_string(ppf, s) /*<>*/ ; } - /*<>*/ strput_acc(ppf, p$2); - /*<>*/ return pp_print_as_size(ppf, size, s$0) /*<>*/ ; + /*<>*/ strput_acc(ppf, p$2); + /*<>*/ return pp_print_as_size(ppf, size, s$0) /*<>*/ ; } function kfprintf(k, ppf, param){ - var fmt = /*<>*/ param[1]; - /*<>*/ return CamlinternalFormat[7].call + var fmt = /*<>*/ param[1]; + /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ - /*<>*/ output_acc(ppf, acc); - /*<>*/ return caml_call1(k, ppf) /*<>*/ ; + /*<>*/ output_acc(ppf, acc); + /*<>*/ return caml_call1(k, ppf) /*<>*/ ; }, 0, - fmt) /*<>*/ ; + fmt) /*<>*/ ; } function ikfprintf(k, ppf, param){ - var fmt = /*<>*/ param[1]; - /*<>*/ return CamlinternalFormat[8].call - (null, k, ppf, fmt) /*<>*/ ; + var fmt = /*<>*/ param[1]; + /*<>*/ return CamlinternalFormat[8].call + (null, k, ppf, fmt) /*<>*/ ; } function ifprintf(ppf, param){ - var fmt = /*<>*/ param[1]; - /*<>*/ return CamlinternalFormat[8].call - (null, function(_n_){ /*<>*/ return 0;}, 0, fmt) /*<>*/ ; + var fmt = /*<>*/ param[1]; + /*<>*/ return CamlinternalFormat[8].call + (null, function(_n_){ /*<>*/ return 0;}, 0, fmt) /*<>*/ ; } function fprintf(ppf){ function _m_(_n_){ /*<>*/ return 0;} - /*<>*/ return function(_n_){ - /*<>*/ return kfprintf(_m_, ppf, _n_);} /*<>*/ ; - /*<>*/ } + /*<>*/ return function(_n_){ + /*<>*/ return kfprintf(_m_, ppf, _n_);} /*<>*/ ; + /*<>*/ } function printf(param){ - var fmt = /*<>*/ param[1]; - /*<>*/ return CamlinternalFormat[7].call + var fmt = /*<>*/ param[1]; + /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ - /*<>*/ return /*<>*/ output_acc - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), - acc) /*<>*/ ; + /*<>*/ return /*<>*/ output_acc + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + acc) /*<>*/ ; }, 0, - fmt) /*<>*/ ; + fmt) /*<>*/ ; } function eprintf(param){ - var fmt = /*<>*/ param[1]; - /*<>*/ return CamlinternalFormat[7].call + var fmt = /*<>*/ param[1]; + /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ - /*<>*/ return /*<>*/ output_acc - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], err_formatter_key), - acc) /*<>*/ ; + /*<>*/ return /*<>*/ output_acc + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], err_formatter_key), + acc) /*<>*/ ; }, 0, - fmt) /*<>*/ ; + fmt) /*<>*/ ; } function kdprintf(k, param){ - var fmt = /*<>*/ param[1]; - /*<>*/ return CamlinternalFormat[7].call + var fmt = /*<>*/ param[1]; + /*<>*/ return CamlinternalFormat[7].call (null, function(acc){ - /*<>*/ return caml_call1 + /*<>*/ return caml_call1 (k, function(ppf){ - /*<>*/ return output_acc(ppf, acc) /*<>*/ ; - }) /*<>*/ ; + /*<>*/ return output_acc(ppf, acc) /*<>*/ ; + }) /*<>*/ ; }, 0, - fmt) /*<>*/ ; + fmt) /*<>*/ ; } function dprintf(fmt){ - /*<>*/ return kdprintf + /*<>*/ return kdprintf (function(i){ - /*<>*/ return i; - /*<>*/ }, - fmt) /*<>*/ ; + /*<>*/ return i; + /*<>*/ }, + fmt) /*<>*/ ; } function ksprintf(k, param){ var - fmt = /*<>*/ param[1], - b = /*<>*/ pp_make_buffer(0), - ppf = /*<>*/ formatter_of_buffer(b); + fmt = /*<>*/ param[1], + b = /*<>*/ pp_make_buffer(0), + ppf = /*<>*/ formatter_of_buffer(b); function k$0(acc){ - /*<>*/ strput_acc(ppf, acc); - /*<>*/ return /*<>*/ caml_call1 - (k, /*<>*/ flush_buffer_formatter(b, ppf)) /*<>*/ ; + /*<>*/ strput_acc(ppf, acc); + /*<>*/ return /*<>*/ caml_call1 + (k, /*<>*/ flush_buffer_formatter(b, ppf)) /*<>*/ ; } - /*<>*/ return CamlinternalFormat[7].call - (null, k$0, 0, fmt) /*<>*/ ; + /*<>*/ return CamlinternalFormat[7].call + (null, k$0, 0, fmt) /*<>*/ ; } function sprintf(fmt){ - /*<>*/ return ksprintf(id, fmt) /*<>*/ ; + /*<>*/ return ksprintf(id, fmt) /*<>*/ ; } function kasprintf(k, param){ var - fmt = /*<>*/ param[1], - b = /*<>*/ pp_make_buffer(0), - ppf = /*<>*/ formatter_of_buffer(b); + fmt = /*<>*/ param[1], + b = /*<>*/ pp_make_buffer(0), + ppf = /*<>*/ formatter_of_buffer(b); function k$0(acc){ - /*<>*/ output_acc(ppf, acc); - /*<>*/ return /*<>*/ caml_call1 - (k, /*<>*/ flush_buffer_formatter(b, ppf)) /*<>*/ ; + /*<>*/ output_acc(ppf, acc); + /*<>*/ return /*<>*/ caml_call1 + (k, /*<>*/ flush_buffer_formatter(b, ppf)) /*<>*/ ; } - /*<>*/ return CamlinternalFormat[7].call - (null, k$0, 0, fmt) /*<>*/ ; + /*<>*/ return CamlinternalFormat[7].call + (null, k$0, 0, fmt) /*<>*/ ; } function asprintf(fmt){ - /*<>*/ return kasprintf(id, fmt) /*<>*/ ; + /*<>*/ return kasprintf(id, fmt) /*<>*/ ; + } + function lfprintf(ppf, param, args){ + var fmt = /*<>*/ param[1]; + /*<>*/ return CamlinternalFormat[13].call + (null, + function(_m_){ + /*<>*/ return output_acc(ppf, _m_); + }, + 0, + fmt, + args) /*<>*/ ; + } + function lprintf(fmt, args){ + /*<>*/ return /*<>*/ lfprintf + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), + fmt, + args) /*<>*/ ; + } + function leprintf(fmt, args){ + /*<>*/ return /*<>*/ lfprintf + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], err_formatter_key), + fmt, + args) /*<>*/ ; + } + function lasprintf(param, args){ + var + fmt = /*<>*/ param[1], + b = /*<>*/ pp_make_buffer(0), + ppf = /*<>*/ formatter_of_buffer(b); + function k(acc){ + /*<>*/ output_acc(ppf, acc); + /*<>*/ return flush_buffer_formatter(b, ppf) /*<>*/ ; + } + /*<>*/ return CamlinternalFormat[13].call + (null, k, 0, fmt, args) /*<>*/ ; + } + function ldprintf(fmt, args, ppf){ + /*<>*/ return lfprintf(ppf, fmt, args) /*<>*/ ; } function flush_standard_formatters(param){ - /*<>*/ /*<>*/ pp_print_flush - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], std_formatter_key), + /*<>*/ /*<>*/ pp_print_flush + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], std_formatter_key), 0); - /*<>*/ return /*<>*/ pp_print_flush - ( /*<>*/ caml_call1 - (Stdlib_Domain[11][2], err_formatter_key), - 0) /*<>*/ ; + /*<>*/ return /*<>*/ pp_print_flush + ( /*<>*/ caml_call1 + (Stdlib_Domain[12][2], err_formatter_key), + 0) /*<>*/ ; } - /*<>*/ Stdlib[100].call(null, flush_standard_formatters); - /*<>*/ Stdlib_Domain[5].call + /*<>*/ Stdlib[100].call(null, flush_standard_formatters); + /*<>*/ Stdlib_Domain[5].call (null, function(param){ - /*<>*/ flush_standard_formatters(0); + /*<>*/ flush_standard_formatters(0); var fs = - /*<>*/ pp_get_formatter_out_functions + /*<>*/ pp_get_formatter_out_functions (std_formatter, 0), - _g_ = /*<>*/ Stdlib[39]; - /*<>*/ pp_set_formatter_out_functions + _g_ = /*<>*/ Stdlib[39]; + /*<>*/ pp_set_formatter_out_functions (std_formatter, [0, function(_k_, _l_, _m_){ - /*<>*/ return buffered_out_string + /*<>*/ return buffered_out_string (std_buf_key, _k_, _l_, _m_); }, fs[2], function(_k_){ - /*<>*/ return buffered_out_flush + /*<>*/ return buffered_out_flush (_g_, std_buf_key, _k_); }, fs[4], @@ -28840,185 +30659,192 @@ fs[6]]); var fs$0 = - /*<>*/ pp_get_formatter_out_functions + /*<>*/ pp_get_formatter_out_functions (err_formatter, 0), - _h_ = /*<>*/ Stdlib[40]; - /*<>*/ return pp_set_formatter_out_functions + _h_ = /*<>*/ Stdlib[40]; + /*<>*/ return pp_set_formatter_out_functions (err_formatter, [0, function(_i_, _j_, _k_){ - /*<>*/ return buffered_out_string + /*<>*/ return buffered_out_string (err_buf_key, _i_, _j_, _k_); }, fs$0[2], function(_i_){ - /*<>*/ return buffered_out_flush + /*<>*/ return buffered_out_flush (_h_, err_buf_key, _i_); }, fs$0[4], fs$0[5], - fs$0[6]]) /*<>*/ ; + fs$0[6]]) /*<>*/ ; }); - /*<>*/ runtime.caml_register_global - ([0, - pp_open_box, - open_box, - pp_close_box, - close_box, - pp_open_hbox, - open_hbox, - pp_open_vbox, - open_vbox, - pp_open_hvbox, - open_hvbox, - pp_open_hovbox, - open_hovbox, - pp_print_string, - print_string, - pp_print_substring, - print_substring, - pp_print_bytes, - print_bytes, - pp_print_as, - print_as, - pp_print_substring_as, - print_substring_as, - pp_print_int, - print_int, - pp_print_float, - print_float, - pp_print_char, - print_char, - pp_print_bool, - print_bool, - pp_print_nothing, - pp_print_space, - print_space, - pp_print_cut, - print_cut, - pp_print_break, - print_break, - pp_print_custom_break, - pp_force_newline, - force_newline, - pp_print_if_newline, - print_if_newline, - pp_print_flush, - print_flush, - pp_print_newline, - print_newline, - pp_infinity, - pp_set_margin, - set_margin, - pp_get_margin, - get_margin, - pp_set_max_indent, - set_max_indent, - pp_get_max_indent, - get_max_indent, - check_geometry, - pp_set_geometry, - set_geometry, - pp_safe_set_geometry, - safe_set_geometry, - pp_update_geometry, - update_geometry, - pp_get_geometry, - get_geometry, - pp_set_max_boxes, - set_max_boxes, - pp_get_max_boxes, - get_max_boxes, - pp_over_max_boxes, - over_max_boxes, - pp_open_tbox, - open_tbox, - pp_close_tbox, - close_tbox, - pp_set_tab, - set_tab, - pp_print_tab, - print_tab, - pp_print_tbreak, - print_tbreak, - pp_set_ellipsis_text, - set_ellipsis_text, - pp_get_ellipsis_text, - get_ellipsis_text, - String_tag, - pp_open_stag, - open_stag, - pp_close_stag, - close_stag, - pp_set_tags, - set_tags, - pp_set_print_tags, - set_print_tags, - pp_set_mark_tags, - set_mark_tags, - pp_get_print_tags, - get_print_tags, - pp_get_mark_tags, - get_mark_tags, - pp_set_formatter_out_channel, - set_formatter_out_channel, - pp_set_formatter_output_functi, - set_formatter_output_functions, - pp_get_formatter_output_functi, - get_formatter_output_functions, - pp_set_formatter_out_functions, - set_formatter_out_functions, - pp_get_formatter_out_functions, - get_formatter_out_functions, - utf_8_scalar_width, - ascii_width, - pp_set_formatter_stag_function, - set_formatter_stag_functions, - pp_get_formatter_stag_function, - get_formatter_stag_functions, - formatter_of_out_channel, - synchronized_formatter_of_out_, - std_formatter, - get_std_formatter, - err_formatter, - get_err_formatter, - formatter_of_buffer, - stdbuf, - get_stdbuf, - str_formatter, - get_str_formatter, - flush_str_formatter, - make_formatter, - make_synchronized_formatter, - formatter_of_out_functions, - make_symbolic_output_buffer, - clear_symbolic_output_buffer, - get_symbolic_output_buffer, - flush_symbolic_output_buffer, - add_symbolic_output_item, - formatter_of_symbolic_output_b, - pp_print_iter, - pp_print_list, - pp_print_array, - pp_print_seq, - pp_print_text, - format_text, - pp_print_option, - pp_print_result, - pp_print_either, - fprintf, - printf, - eprintf, - sprintf, - asprintf, - dprintf, - ifprintf, - kfprintf, - kdprintf, - ikfprintf, - ksprintf, - kasprintf], - "Stdlib__Format"); + var + Stdlib_Format = + /*<>*/ [0, + pp_open_box, + open_box, + pp_close_box, + close_box, + pp_open_hbox, + open_hbox, + pp_open_vbox, + open_vbox, + pp_open_hvbox, + open_hvbox, + pp_open_hovbox, + open_hovbox, + pp_print_string, + print_string, + pp_print_substring, + print_substring, + pp_print_bytes, + print_bytes, + pp_print_as, + print_as, + pp_print_substring_as, + print_substring_as, + pp_print_int, + print_int, + pp_print_float, + print_float, + pp_print_char, + print_char, + pp_print_bool, + print_bool, + pp_print_nothing, + pp_print_space, + print_space, + pp_print_cut, + print_cut, + pp_print_break, + print_break, + pp_print_custom_break, + pp_force_newline, + force_newline, + pp_print_if_newline, + print_if_newline, + pp_print_flush, + print_flush, + pp_print_newline, + print_newline, + pp_infinity, + pp_set_margin, + set_margin, + pp_get_margin, + get_margin, + pp_set_max_indent, + set_max_indent, + pp_get_max_indent, + get_max_indent, + check_geometry, + pp_set_geometry, + set_geometry, + pp_safe_set_geometry, + safe_set_geometry, + pp_update_geometry, + update_geometry, + pp_get_geometry, + get_geometry, + pp_set_max_boxes, + set_max_boxes, + pp_get_max_boxes, + get_max_boxes, + pp_over_max_boxes, + over_max_boxes, + pp_open_tbox, + open_tbox, + pp_close_tbox, + close_tbox, + pp_set_tab, + set_tab, + pp_print_tab, + print_tab, + pp_print_tbreak, + print_tbreak, + pp_set_ellipsis_text, + set_ellipsis_text, + pp_get_ellipsis_text, + get_ellipsis_text, + String_tag, + pp_open_stag, + open_stag, + pp_close_stag, + close_stag, + pp_set_tags, + set_tags, + pp_set_print_tags, + set_print_tags, + pp_set_mark_tags, + set_mark_tags, + pp_get_print_tags, + get_print_tags, + pp_get_mark_tags, + get_mark_tags, + pp_set_formatter_out_channel, + set_formatter_out_channel, + pp_set_formatter_output_functi, + set_formatter_output_functions, + pp_get_formatter_output_functi, + get_formatter_output_functions, + pp_set_formatter_out_functions, + set_formatter_out_functions, + pp_get_formatter_out_functions, + get_formatter_out_functions, + utf_8_scalar_width, + ascii_width, + pp_set_formatter_stag_function, + set_formatter_stag_functions, + pp_get_formatter_stag_function, + get_formatter_stag_functions, + formatter_of_out_channel, + synchronized_formatter_of_out_, + std_formatter, + get_std_formatter, + err_formatter, + get_err_formatter, + formatter_of_buffer, + stdbuf, + get_stdbuf, + str_formatter, + get_str_formatter, + flush_str_formatter, + make_formatter, + make_synchronized_formatter, + formatter_of_out_functions, + make_symbolic_output_buffer, + clear_symbolic_output_buffer, + get_symbolic_output_buffer, + flush_symbolic_output_buffer, + add_symbolic_output_item, + formatter_of_symbolic_output_b, + pp_print_iter, + pp_print_list, + pp_print_array, + pp_print_seq, + pp_print_text, + format_text, + pp_print_option, + pp_print_result, + pp_print_either, + fprintf, + printf, + eprintf, + sprintf, + asprintf, + dprintf, + ifprintf, + kfprintf, + kdprintf, + ikfprintf, + ksprintf, + kasprintf, + CamlinternalFormat[12], + lfprintf, + lprintf, + leprintf, + lasprintf, + ldprintf]; + runtime.caml_register_global(Stdlib_Format, "Stdlib__Format"); return; /*<>*/ } (globalThis)); @@ -29389,7 +31215,7 @@ var l = /*<>*/ caml_ml_string_length(tok); /*<>*/ if (0 !== l && 43 === /*<>*/ caml_string_get(tok, 0)) - /*<>*/ return Stdlib_String[16].call + /*<>*/ return Stdlib_String[19].call (null, tok, 1, l - 1 | 0) /*<>*/ ; /*<>*/ return tok; /*<>*/ } @@ -29597,7 +31423,7 @@ var width$2 = /*<>*/ store_char(width$0, ib, c), precision$0 = - /*<>*/ Stdlib_Int[10].call(null, width$2, precision), + /*<>*/ Stdlib_Int[14].call(null, width$2, precision), width$3 = /*<>*/ width$2 - (precision$0 - scan_fractional_part(precision$0, ib) | 0) @@ -29711,7 +31537,7 @@ else var precision$0 = - /*<>*/ Stdlib_Int[10].call + /*<>*/ Stdlib_Int[14].call (null, width$6, precision), width$7 = /*<>*/ width$6 @@ -29782,7 +31608,7 @@ var width$1 = /*<>*/ store_char(width$0, ib, c), precision$0 = - /*<>*/ Stdlib_Int[10].call + /*<>*/ Stdlib_Int[14].call (null, width$1, precision), width_precision = /*<>*/ scan_fractional_part(precision$0, ib), @@ -29866,7 +31692,7 @@ if(112 === _u_){width$5 = width$4; break a;} var precision$0 = - /*<>*/ Stdlib_Int[10].call + /*<>*/ Stdlib_Int[14].call (null, width$4, precision), width$5 = /*<>*/ width$4 @@ -30201,10 +32027,10 @@ /*<>*/ if(6 === fmting) /*<>*/ return _o_; var - str = /*<>*/ CamlinternalFormat[17].call(null, fmting), + str = /*<>*/ CamlinternalFormat[19].call(null, fmting), stp = /*<>*/ caml_string_get(str, 1), sub_str = - /*<>*/ /*<>*/ Stdlib_String[16].call + /*<>*/ /*<>*/ Stdlib_String[19].call (null, str, 2, @@ -30225,7 +32051,7 @@ rest$3 = fmt[3], fmtty = fmt[2], _u_ = - /*<>*/ CamlinternalFormat[21].call(null, fmtty), + /*<>*/ CamlinternalFormat[23].call(null, fmtty), _u_ = /*<>*/ CamlinternalFormatBasics[2].call (null, _u_); @@ -30335,9 +32161,9 @@ ty2 = fmtty[2], ty1 = fmtty[1], _u_ = - /*<>*/ CamlinternalFormat[21].call(null, ty1), + /*<>*/ CamlinternalFormat[23].call(null, ty1), ty = - /*<>*/ CamlinternalFormat[22].call + /*<>*/ CamlinternalFormat[24].call (null, _u_, ty2), fmtty$2 = /*<>*/ CamlinternalFormatBasics[1].call @@ -30483,7 +32309,7 @@ var rest$15 = /*<>*/ fmt[2], str$0 = fmt[1]; - /*<>*/ Stdlib_String[30].call + /*<>*/ Stdlib_String[49].call (null, function(_u_){ /*<>*/ return check_char(ib, _u_); @@ -30507,7 +32333,7 @@ /*<>*/ try{ var _t_ = - /*<>*/ CamlinternalFormat[14].call + /*<>*/ CamlinternalFormat[16].call (null, s, fmtty), fmt$2 = _t_; } @@ -30537,9 +32363,9 @@ rest$19 = /*<>*/ fmt[2], formatting_lit = fmt[1], _t_ = - /*<>*/ CamlinternalFormat[17].call + /*<>*/ CamlinternalFormat[19].call (null, formatting_lit); - /*<>*/ Stdlib_String[30].call + /*<>*/ Stdlib_String[49].call (null, function(_u_){ /*<>*/ return check_char(ib, _u_); @@ -30667,27 +32493,27 @@ /*<>*/ try{ var fmt$5 = - /*<>*/ CamlinternalFormat[13].call + /*<>*/ CamlinternalFormat[15].call (null, 0, s$0) [1], fmt$6 = - /*<>*/ CamlinternalFormat[13].call + /*<>*/ CamlinternalFormat[15].call (null, 0, s$0) [1], _t_ = - /*<>*/ CamlinternalFormat[21].call + /*<>*/ CamlinternalFormat[23].call (null, fmtty$0), _t_ = /*<>*/ CamlinternalFormatBasics[2].call (null, _t_), fmt$7 = - /*<>*/ CamlinternalFormat[12].call + /*<>*/ CamlinternalFormat[14].call (null, fmt$6, _t_), _t_ = /*<>*/ CamlinternalFormatBasics[2].call (null, fmtty$0), _t_ = - /*<>*/ CamlinternalFormat[12].call + /*<>*/ CamlinternalFormat[14].call (null, fmt$5, _t_), fmt$4 = fmt$7, fmt$3 = _t_; @@ -30738,7 +32564,7 @@ iconv$2 = fmt[1], conv$2 = /*<>*/ /*<>*/ integer_conversion_of_char - ( /*<>*/ CamlinternalFormat[16].call + ( /*<>*/ CamlinternalFormat[18].call (null, iconv$2)), scan$7 = /*<>*/ function(width, param, ib){ @@ -30764,7 +32590,7 @@ iconv$1 = fmt[1], conv$1 = /*<>*/ /*<>*/ integer_conversion_of_char - ( /*<>*/ CamlinternalFormat[16].call + ( /*<>*/ CamlinternalFormat[18].call (null, iconv$1)), scan$6 = /*<>*/ function(width, param, ib){ @@ -30790,7 +32616,7 @@ iconv$0 = fmt[1], conv$0 = /*<>*/ /*<>*/ integer_conversion_of_char - ( /*<>*/ CamlinternalFormat[16].call + ( /*<>*/ CamlinternalFormat[18].call (null, iconv$0)), scan$5 = /*<>*/ function(width, param, ib){ @@ -30816,7 +32642,7 @@ iconv = fmt[1], conv = /*<>*/ /*<>*/ integer_conversion_of_char - ( /*<>*/ CamlinternalFormat[16].call(null, iconv)), + ( /*<>*/ CamlinternalFormat[18].call(null, iconv)), scan$4 = /*<>*/ function(width, param, ib){ /*<>*/ return scan_int_conversion @@ -30992,7 +32818,7 @@ if(exc[1] !== Stdlib[6]) throw caml_maybe_attach_backtrace(exc, 0); var msg = exc[2], - _t_ = /*<>*/ Stdlib_String[25].call(null, str), + _t_ = /*<>*/ Stdlib_String[44].call(null, str), _t_ = Stdlib[28].call(null, _t_, cst), _t_ = /*<>*/ Stdlib[28].call(null, ' in format "', _t_), @@ -31064,7 +32890,7 @@ /*<>*/ try{ var _t_ = - /*<>*/ CamlinternalFormat[15].call + /*<>*/ CamlinternalFormat[17].call (null, str, format), fmt = _t_; } @@ -31083,7 +32909,7 @@ } function format_from_string(s, fmt){ var - _t_ = /*<>*/ Stdlib_String[25].call(null, s), + _t_ = /*<>*/ Stdlib_String[44].call(null, s), _t_ = Stdlib[28].call(null, _t_, cst); /*<>*/ return /*<>*/ sscanf_format ( /*<>*/ Stdlib[28].call(null, cst, _t_), @@ -31256,7 +33082,7 @@ ((len * 2 | 0) + 2 | 0, dummy_met); /*<>*/ caml_check_bound(methods, 0)[1] = len; var - _m_ = /*<>*/ Stdlib_Sys[10], + _m_ = /*<>*/ Stdlib_Sys[11], _m_ = ( /*<>*/ runtime.caml_mul ( /*<>*/ fit_size(len), _m_) @@ -31361,7 +33187,7 @@ /*<>*/ try{ var _m_ = - /*<>*/ Stdlib_List[54].call + /*<>*/ Stdlib_List[55].call (null, label, table[6]); return _m_; } @@ -31410,7 +33236,7 @@ caml_call3 (Vars[24], function(lab, info, tvars){ - /*<>*/ return Stdlib_List[38].call + /*<>*/ return Stdlib_List[39].call (null, lab, vars$0) ? /*<>*/ caml_call3 (Vars[2], lab, info, tvars) @@ -31421,7 +33247,7 @@ var by_name = /*<>*/ [0, Meths[1]], by_label = /*<>*/ [0, Labs[1]]; - /*<>*/ Stdlib_List[29].call + /*<>*/ Stdlib_List[30].call (null, function(met, label){ /*<>*/ by_name[1] = @@ -31444,7 +33270,7 @@ }, concr_meths$0, concr_meth_labs); - /*<>*/ Stdlib_List[29].call + /*<>*/ Stdlib_List[30].call (null, function(met, label){ /*<>*/ by_name[1] = @@ -31458,11 +33284,11 @@ /*<>*/ table[3] = by_name[1]; /*<>*/ table[4] = by_label[1]; /*<>*/ table[6] = - Stdlib_List[28].call + Stdlib_List[29].call (null, function(met, hm){ var lab = /*<>*/ met[1]; - /*<>*/ return Stdlib_List[38].call + /*<>*/ return Stdlib_List[39].call (null, lab, virt_meth_labs) ? hm : [0, met, hm] /*<>*/ ; @@ -31484,7 +33310,7 @@ /*<>*/ table[5] = Stdlib_List[8].call(null, table[5]); /*<>*/ table[7] = - Stdlib_List[27].call + Stdlib_List[28].call (null, function(s, v){ var @@ -31498,11 +33324,11 @@ /*<>*/ table[3] = by_name; /*<>*/ table[4] = by_label; /*<>*/ table[6] = - Stdlib_List[28].call + Stdlib_List[29].call (null, function(met, hm){ var lab = /*<>*/ met[1]; - /*<>*/ return Stdlib_List[38].call + /*<>*/ return Stdlib_List[39].call (null, lab, virt_meths) ? hm : [0, met, hm] /*<>*/ ; @@ -31634,7 +33460,7 @@ (null, inst_var_count, table[1] - 1 | 0); /*<>*/ table[8] = Stdlib_List[11].call(null, table[8]); - var _j_ = /*<>*/ Stdlib_Sys[10]; + var _j_ = /*<>*/ Stdlib_Sys[11]; return /*<>*/ resize (table, 3 @@ -31855,7 +33681,7 @@ var n$0 = n; else var - _h_ = /*<>*/ Stdlib_Sys[10], + _h_ = /*<>*/ Stdlib_Sys[11], n$0 = (2 + @@ -32324,7 +34150,7 @@ //# unitInfo: Provides: Stdlib__Dynarray //# unitInfo: Requires: CamlinternalOO, Stdlib, Stdlib__Array, Stdlib__Obj, Stdlib__Printf, Stdlib__Seq, Stdlib__Sys -//# shape: Stdlib__Dynarray:[F(1)*,F(2),F(2),F(2),F(3),F(1)*,F(1)*,F(1),F(1),F(1),F(2),F(2),F(2),F(2),F(2),F(3),F(5),F(1),F(1),F(1),F(2),F(1),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(1),F(1),F(1),F(1),F(1),F(1)->F(1),F(1)*->F(1),F(1)->F(1),F(1)*->F(1),F(1)*,F(2),F(2),F(1),F(2),F(1),F(2)] +//# shape: Stdlib__Dynarray:[F(1)*,F(2),F(2),F(2),F(3),F(1)*,F(1)*,F(1),F(1),F(1),F(2),F(2),F(2),F(2),F(2),F(3),F(5),F(1),F(1),F(1),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(1),F(1),F(1),F(1),F(1),F(1)->F(1),F(1)*->F(1),F(1)->F(1),F(1)*->F(1),F(1)*,F(2),F(2),F(1),F(2),F(1),F(2)] (function (globalThis){ "use strict"; @@ -32361,43 +34187,42 @@ Stdlib_Obj = caml_get_global("Stdlib__Obj"), CamlinternalOO = caml_get_global("CamlinternalOO"); function copy_from_array(a, dummy){ - var _J_ = /*<>*/ Stdlib_Obj[17]; + var _J_ = /*<>*/ Stdlib_Obj[17]; if(caml_obj_tag(a) !== _J_) - /*<>*/ return Stdlib_Array[7].call(null, a) /*<>*/ ; + /*<>*/ return Stdlib_Array[7].call(null, a) /*<>*/ ; var - n = /*<>*/ a.length - 1, - arr = /*<>*/ caml_array_make(n, dummy), - _J_ = /*<>*/ n - 1 | 0; + n = /*<>*/ a.length - 1, + arr = /*<>*/ caml_array_make(n, dummy), + _J_ = /*<>*/ n - 1 | 0; if(_J_ >= 0){ var i = 0; for(;;){ - var v = /*<>*/ a[i + 1]; - /*<>*/ arr[i + 1] = v; - var _K_ = /*<>*/ i + 1 | 0; + /*<>*/ arr[i + 1] = a[i + 1]; + var _K_ = /*<>*/ i + 1 | 0; if(_J_ === i) break; i = _K_; } } - /*<>*/ return arr; - /*<>*/ } + /*<>*/ return arr; + /*<>*/ } var Dummy_found = /*<>*/ [248, "Stdlib.Dynarray.Dummy.Array.Dummy_found", runtime.caml_fresh_oo_id(0)]; function prefix(arr, n){ - /*<>*/ return Stdlib_Array[6].call(null, arr, 0, n) /*<>*/ ; + /*<>*/ return Stdlib_Array[6].call(null, arr, 0, n) /*<>*/ ; } function extend(arr, length, dummy, new_capacity){ var new_arr = - /*<>*/ caml_array_make(new_capacity, dummy); - /*<>*/ Stdlib_Array[9].call + /*<>*/ caml_array_make(new_capacity, dummy); + /*<>*/ Stdlib_Array[9].call (null, arr, 0, new_arr, 0, length); - /*<>*/ return new_arr; - /*<>*/ } + /*<>*/ return new_arr; + /*<>*/ } var _a_ = /*<>*/ [0, 0]; - /*<>*/ if(! _a_[1]){ + /*<>*/ if(! _a_[1]){ var _b_ = CamlinternalOO[16].call(null, 0), _c_ = CamlinternalOO[3].call(null, _b_, "x"); @@ -32410,14 +34235,14 @@ }; } var - r = /*<>*/ [0, 0], - dummy = /*<>*/ caml_call1(_a_[1], [0, 0, r]); - /*<>*/ r[1] = [0, dummy]; - /*<>*/ _a_ = ": index "; + r = /*<>*/ [0, 0], + dummy = /*<>*/ caml_call1(_a_[1], [0, 0, r]); + /*<>*/ r[1] = [0, dummy]; + /*<>*/ _a_ = ": index "; var cst_Dynarray = /*<>*/ "Dynarray.", _f_ = - /*<>*/ [0, + /*<>*/ [0, [11, cst_Dynarray, [2, @@ -32434,44 +34259,44 @@ _a_, [4, 0, 0, 0, [11, " out of bounds (0..", [4, 0, 0, 0, [12, 41, 0]]]]]]], "Dynarray.%s: index %d out of bounds (0..%d)"]; - function index_out_of_bounds(f, i, length){ - /*<>*/ return 0 === length - ? /*<>*/ caml_call2 - (Stdlib_Printf[10].call(null, Stdlib[1], _f_), f, i) - : /*<>*/ caml_call3 + function index_out_of_bounds(fname, i, length){ + /*<>*/ return 0 === length + ? /*<>*/ caml_call2 + (Stdlib_Printf[10].call(null, Stdlib[1], _f_), fname, i) + : /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _g_), - f, + fname, i, - length - 1 | 0) /*<>*/ ; + length - 1 | 0) /*<>*/ ; } var _a_ = /*<>*/ " requested", _h_ = - /*<>*/ [0, + /*<>*/ [0, [11, cst_Dynarray, [2, 0, [11, ": negative length ", [4, 0, 0, 0, [11, _a_, 0]]]]], "Dynarray.%s: negative length %d requested"]; - function negative_length_requested(f, n){ - /*<>*/ return caml_call2 - (Stdlib_Printf[10].call(null, Stdlib[1], _h_), f, n) /*<>*/ ; + function negative_length_requested(fname, n){ + /*<>*/ return caml_call2 + (Stdlib_Printf[10].call(null, Stdlib[1], _h_), fname, n) /*<>*/ ; } var _i_ = - /*<>*/ [0, + /*<>*/ [0, [11, cst_Dynarray, [2, 0, [11, ": negative capacity ", [4, 0, 0, 0, [11, _a_, 0]]]]], "Dynarray.%s: negative capacity %d requested"]; - function negative_capacity_requested(f, n){ - /*<>*/ return caml_call2 - (Stdlib_Printf[10].call(null, Stdlib[1], _i_), f, n) /*<>*/ ; + function negative_capacity_requested(fname, n){ + /*<>*/ return caml_call2 + (Stdlib_Printf[10].call(null, Stdlib[1], _i_), fname, n) /*<>*/ ; } var invalid_state_description = /*<>*/ "Invalid dynarray (unsynchronized concurrent length change)", _k_ = - /*<>*/ [0, + /*<>*/ [0, [2, 0, [11, @@ -32479,15 +34304,15 @@ [4, 0, 0, 0, [11, " < length ", [4, 0, 0, 0, 0]]]]], "%s: missing element at position %d < length %d"]; function missing_element(i, length){ - /*<>*/ return caml_call3 + /*<>*/ return caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _k_), invalid_state_description, i, - length) /*<>*/ ; + length) /*<>*/ ; } var _o_ = - /*<>*/ [0, + /*<>*/ [0, [11, cst_Dynarray, [2, @@ -32497,15 +34322,15 @@ [4, 0, 0, 0, [11, " <> ", [4, 0, 0, 0, 0]]]]]], "Dynarray.%s: array length mismatch: %d <> %d"]; function different_lengths(f, length1, length2){ - /*<>*/ return caml_call3 + /*<>*/ return caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _o_), f, length1, - length2) /*<>*/ ; + length2) /*<>*/ ; } var _m_ = - /*<>*/ [0, + /*<>*/ [0, [11, cst_Dynarray, [2, @@ -32518,205 +34343,204 @@ 0, [11, " to ", [4, 0, 0, 0, [11, " occurred during iteration", 0]]]]]]], "Dynarray.%s: a length change from %d to %d occurred during iteration"]; - function check_same_length(f, _I_, expected){ + function check_same_length(fname, _I_, expected){ var - length_a = /*<>*/ _I_[1], - _I_ = /*<>*/ expected !== length_a ? 1 : 0; + length_a = /*<>*/ _I_[1], + _I_ = /*<>*/ expected !== length_a ? 1 : 0; return _I_ - ? /*<>*/ caml_call3 + ? /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _m_), - f, + fname, expected, length_a) - : _I_ /*<>*/ ; + : _I_ /*<>*/ ; } var _l_ = - /*<>*/ [0, + /*<>*/ [0, [2, 0, [11, ": length ", [4, 0, 0, 0, [11, " > capacity ", [4, 0, 0, 0, 0]]]]], "%s: length %d > capacity %d"]; function check_valid_length(length, arr){ var - capacity = /*<>*/ arr.length - 1, - _I_ = /*<>*/ capacity < length ? 1 : 0; + capacity = /*<>*/ arr.length - 1, + _I_ = /*<>*/ capacity < length ? 1 : 0; return _I_ - ? /*<>*/ caml_call3 + ? /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _l_), invalid_state_description, length, capacity) - : _I_ /*<>*/ ; + : _I_ /*<>*/ ; } function unsafe_get(arr, dummy, i, length){ - var v = /*<>*/ arr[i + 1]; - /*<>*/ return v === dummy - ? /*<>*/ missing_element(i, length) - : v /*<>*/ ; + var v = /*<>*/ arr[i + 1]; + /*<>*/ return v === dummy + ? /*<>*/ missing_element(i, length) + : v /*<>*/ ; } function create(param){ - /*<>*/ return [0, 0, [0], dummy]; - /*<>*/ } + /*<>*/ return [0, 0, [0], dummy]; + /*<>*/ } function make(n, x){ - /*<>*/ if(n < 0) - /*<>*/ negative_length_requested("make", n); - var _I_ = /*<>*/ Stdlib_Obj[16]; + /*<>*/ if(n < 0) + /*<>*/ negative_length_requested("make", n); + var _I_ = /*<>*/ Stdlib_Obj[16]; if(caml_obj_tag(x) !== _I_) var arr$0 = - /*<>*/ /*<>*/ caml_array_make + /*<>*/ /*<>*/ caml_array_make (n, x); else{ - var arr = /*<>*/ caml_array_make(n, dummy); - /*<>*/ Stdlib_Array[8].call(null, arr, 0, n, x); - /*<>*/ arr$0 = arr; + var arr = /*<>*/ caml_array_make(n, dummy); + /*<>*/ Stdlib_Array[8].call(null, arr, 0, n, x); + /*<>*/ arr$0 = arr; } - /*<>*/ return [0, n, arr$0, dummy]; - /*<>*/ } + /*<>*/ return [0, n, arr$0, dummy]; + /*<>*/ } function init(n, f){ - /*<>*/ if(n < 0) - /*<>*/ negative_length_requested("init", n); + /*<>*/ if(n < 0) + /*<>*/ negative_length_requested("init", n); var - arr = /*<>*/ caml_array_make(n, dummy), - _H_ = /*<>*/ n - 1 | 0; + arr = /*<>*/ caml_array_make(n, dummy), + _H_ = /*<>*/ n - 1 | 0; if(_H_ >= 0){ var i = 0; for(;;){ - var v = /*<>*/ caml_call1(f, i); - /*<>*/ arr[i + 1] = v; - var _I_ = /*<>*/ i + 1 | 0; + /*<>*/ arr[i + 1] = caml_call1(f, i); + var _I_ = /*<>*/ i + 1 | 0; if(_H_ === i) break; i = _I_; } } - /*<>*/ return [0, n, arr, dummy]; - /*<>*/ } + /*<>*/ return [0, n, arr, dummy]; + /*<>*/ } function get(param, i){ var - v = /*<>*/ caml_check_bound(param[2], i)[i + 1], - dummy = /*<>*/ param[3]; - /*<>*/ if(v !== dummy) - /*<>*/ return v; - var length = /*<>*/ param[1]; - /*<>*/ return i < length - ? /*<>*/ missing_element(i, length) - : /*<>*/ index_out_of_bounds("get", i, length) /*<>*/ ; + v = /*<>*/ caml_check_bound(param[2], i)[i + 1], + dummy = /*<>*/ param[3]; + /*<>*/ if(v !== dummy) + /*<>*/ return v; + var length = /*<>*/ param[1]; + /*<>*/ return i < length + ? /*<>*/ missing_element(i, length) + : /*<>*/ index_out_of_bounds("get", i, length) /*<>*/ ; } function set(param, i, x){ - var length = /*<>*/ param[1], arr = param[2]; - /*<>*/ return length <= i - ? /*<>*/ index_out_of_bounds + var length = /*<>*/ param[1], arr = param[2]; + /*<>*/ return length <= i + ? /*<>*/ index_out_of_bounds ("set", i, length) - : ( /*<>*/ caml_check_bound + : ( /*<>*/ caml_check_bound (arr, i) [i + 1] = x, - 0) /*<>*/ ; + 0) /*<>*/ ; } function length(param){ - /*<>*/ return param[1]; - /*<>*/ } + /*<>*/ return param[1]; + /*<>*/ } function is_empty(param){ - /*<>*/ return 0 === param[1] ? 1 : 0; - /*<>*/ } + /*<>*/ return 0 === param[1] ? 1 : 0; + /*<>*/ } function copy(param){ var - length = /*<>*/ param[1], + length = /*<>*/ param[1], arr = param[2], dummy = param[3]; - /*<>*/ check_valid_length(length, arr); - var arr$0 = /*<>*/ prefix(arr, length); - /*<>*/ return [0, length, arr$0, dummy]; - /*<>*/ } + /*<>*/ check_valid_length(length, arr); + var arr$0 = /*<>*/ prefix(arr, length); + /*<>*/ return [0, length, arr$0, dummy]; + /*<>*/ } var _n_ = - /*<>*/ [0, + /*<>*/ [0, [11, cst_Dynarray, [2, 0, [11, ": empty array", 0]]], "Dynarray.%s: empty array"]; function get_last(a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - /*<>*/ if(0 === length) - /*<>*/ caml_call1 + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + /*<>*/ if(0 === length) + /*<>*/ caml_call1 (Stdlib_Printf[10].call(null, Stdlib[1], _n_), "get_last"); - /*<>*/ return unsafe_get - (arr, dummy, length - 1 | 0, length) /*<>*/ ; + /*<>*/ return unsafe_get + (arr, dummy, length - 1 | 0, length) /*<>*/ ; } function find_last(param){ var - length = /*<>*/ param[1], + length = /*<>*/ param[1], arr = param[2], dummy = param[3]; - /*<>*/ check_valid_length(length, arr); - /*<>*/ return 0 === length + /*<>*/ check_valid_length(length, arr); + /*<>*/ return 0 === length ? 0 : [0, - /*<>*/ unsafe_get - (arr, dummy, length - 1 | 0, length)] /*<>*/ ; + /*<>*/ unsafe_get + (arr, dummy, length - 1 | 0, length)] /*<>*/ ; } function pop_last(param){ var - length = /*<>*/ param[1], + length = /*<>*/ param[1], arr = param[2], dummy = param[3]; - /*<>*/ check_valid_length(length, arr); - /*<>*/ if(0 === length) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ check_valid_length(length, arr); + /*<>*/ if(0 === length) + /*<>*/ throw caml_maybe_attach_backtrace (Stdlib[8], 1); var - last = /*<>*/ length - 1 | 0, - v = /*<>*/ unsafe_get(arr, dummy, last, length); - /*<>*/ arr[last + 1] = dummy; - /*<>*/ param[1] = last; - /*<>*/ return v; - /*<>*/ } + last = /*<>*/ length - 1 | 0, + v = /*<>*/ unsafe_get(arr, dummy, last, length); + /*<>*/ arr[last + 1] = dummy; + /*<>*/ param[1] = last; + /*<>*/ return v; + /*<>*/ } function pop_last_opt(a){ - /*<>*/ try{ - var x = /*<>*/ pop_last(a); + /*<>*/ try{ + var x = /*<>*/ pop_last(a); } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); - if(exn === Stdlib[8]) /*<>*/ return 0; + if(exn === Stdlib[8]) /*<>*/ return 0; /*<>*/ throw caml_maybe_attach_backtrace(exn, 0); } - /*<>*/ return [0, x]; - /*<>*/ } + /*<>*/ return [0, x]; + /*<>*/ } function remove_last(a){ var - last = /*<>*/ a[1] - 1 | 0, - _H_ = /*<>*/ 0 <= last ? 1 : 0; + last = /*<>*/ a[1] - 1 | 0, + _H_ = /*<>*/ 0 <= last ? 1 : 0; if(_H_){ - /*<>*/ a[1] = last; - var dummy = /*<>*/ a[3]; - caml_check_bound(a[2], last)[last + 1] = dummy; - /*<>*/ _H_ = 0; + /*<>*/ a[1] = last; + /*<>*/ _H_ = a[3]; + caml_check_bound(a[2], last)[last + 1] = _H_; + /*<>*/ _H_ = 0; } - /*<>*/ return _H_; - /*<>*/ } + /*<>*/ return _H_; + /*<>*/ } function truncate(a, n){ - /*<>*/ if(n < 0) - /*<>*/ negative_length_requested("truncate", n); - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ return length <= n + /*<>*/ if(n < 0) + /*<>*/ negative_length_requested("truncate", n); + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ return length <= n ? 0 : (a [1] = n, - /*<>*/ Stdlib_Array[8].call - (null, arr, n, length - n | 0, dummy)) /*<>*/ ; + /*<>*/ Stdlib_Array[8].call + (null, arr, n, length - n | 0, dummy)) /*<>*/ ; } function clear(a){ - /*<>*/ return truncate(a, 0) /*<>*/ ; + /*<>*/ return truncate(a, 0) /*<>*/ ; } function capacity(param){ - /*<>*/ return param[2].length - 1; - /*<>*/ } + /*<>*/ return param[2].length - 1; + /*<>*/ } var _a_ = /*<>*/ "dynarray.ml", - _r_ = /*<>*/ [0, _a_, 639, 4], - _q_ = [0, _a_, 644, 4], - _p_ = [0, _a_, 645, 4], + _r_ = /*<>*/ [0, _a_, 685, 4], + _q_ = [0, _a_, 690, 4], + _p_ = [0, _a_, 691, 4], _j_ = [0, [11, @@ -32733,16 +34557,16 @@ "Dynarray.%s: cannot grow to requested length %d (max_array_length is %d)"]; function ensure_capacity(a, capacity_request){ var - arr = /*<>*/ a[2], - cur_capacity = /*<>*/ arr.length - 1, + arr = /*<>*/ a[2], + cur_capacity = /*<>*/ arr.length - 1, _G_ = /*<>*/ "ensure_capacity"; - /*<>*/ if(0 > capacity_request) - /*<>*/ return negative_capacity_requested - (_G_, capacity_request) /*<>*/ ; - /*<>*/ if(capacity_request <= cur_capacity) - /*<>*/ return 0; - /*<>*/ if(Stdlib_Sys[14] < capacity_request){ - var _H_ = /*<>*/ Stdlib_Sys[14]; + /*<>*/ if(0 > capacity_request) + /*<>*/ return negative_capacity_requested + (_G_, capacity_request) /*<>*/ ; + /*<>*/ if(capacity_request <= cur_capacity) + /*<>*/ return 0; + /*<>*/ if(Stdlib_Sys[15] < capacity_request){ + var _H_ = /*<>*/ Stdlib_Sys[15]; caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _j_), _G_, @@ -32751,167 +34575,183 @@ } var n = - /*<>*/ 512 < cur_capacity + /*<>*/ 512 < cur_capacity ? cur_capacity + (cur_capacity / 2 | 0) | 0 : cur_capacity * 2 | 0, - _G_ = /*<>*/ Stdlib_Sys[14], + _G_ = /*<>*/ Stdlib_Sys[15], _H_ = Stdlib[17].call(null, 8, n), - _G_ = /*<>*/ Stdlib[16].call(null, _H_, _G_), + _G_ = /*<>*/ Stdlib[16].call(null, _H_, _G_), new_capacity = - /*<>*/ Stdlib[17].call(null, _G_, capacity_request); - /*<>*/ if(0 >= new_capacity) + /*<>*/ Stdlib[17].call(null, _G_, capacity_request); + /*<>*/ if(0 >= new_capacity) throw caml_maybe_attach_backtrace([0, Assert_failure, _r_], 1); var new_arr = - /*<>*/ extend(arr, a[1], a[3], new_capacity); - /*<>*/ a[2] = new_arr; - /*<>*/ if(0 > capacity_request) + /*<>*/ extend(arr, a[1], a[3], new_capacity); + /*<>*/ a[2] = new_arr; + /*<>*/ if(0 > capacity_request) throw caml_maybe_attach_backtrace([0, Assert_failure, _q_], 1); - /*<>*/ if(capacity_request <= new_arr.length - 1) + /*<>*/ if(capacity_request <= new_arr.length - 1) return 0; throw caml_maybe_attach_backtrace([0, Assert_failure, _p_], 1); - /*<>*/ } + /*<>*/ } function ensure_extra_capacity(a, extra_capacity_request){ - /*<>*/ return ensure_capacity - (a, a[1] + extra_capacity_request | 0) /*<>*/ ; + /*<>*/ return ensure_capacity + (a, a[1] + extra_capacity_request | 0) /*<>*/ ; } function fit_capacity(param){ - /*<>*/ return param[2].length - 1 === param[1] + /*<>*/ return param[2].length - 1 === param[1] ? 0 : (param [2] - = /*<>*/ prefix(param[2], param[1]), - 0) /*<>*/ ; + = /*<>*/ prefix(param[2], param[1]), + 0) /*<>*/ ; } function set_capacity(a, n){ - /*<>*/ if(n < 0) - /*<>*/ negative_capacity_requested("set_capacity", n); + /*<>*/ if(n < 0) + /*<>*/ negative_capacity_requested("set_capacity", n); var - arr = /*<>*/ a[2], - cur_capacity = /*<>*/ arr.length - 1; - /*<>*/ if(n < cur_capacity){ - /*<>*/ a[1] = Stdlib[16].call(null, a[1], n); - /*<>*/ a[2] = prefix(arr, n); - /*<>*/ return 0; + arr = /*<>*/ a[2], + cur_capacity = /*<>*/ arr.length - 1; + /*<>*/ if(n < cur_capacity){ + /*<>*/ a[1] = Stdlib[16].call(null, a[1], n); + /*<>*/ a[2] = prefix(arr, n); + /*<>*/ return 0; } var - _G_ = /*<>*/ cur_capacity < n ? 1 : 0, + _G_ = /*<>*/ cur_capacity < n ? 1 : 0, _G_ = _G_ - ? (a[2] = /*<>*/ extend(arr, a[1], a[3], n), 0) + ? (a[2] = /*<>*/ extend(arr, a[1], a[3], n), 0) : _G_; - /*<>*/ return _G_; - /*<>*/ } + /*<>*/ return _G_; + /*<>*/ } function reset(param){ - /*<>*/ param[1] = 0; - /*<>*/ param[2] = [0]; + /*<>*/ param[1] = 0; + /*<>*/ param[2] = [0]; return 0; - /*<>*/ } + /*<>*/ } function add_last_if_room(param, v){ - var length = /*<>*/ param[1], arr = param[2]; - /*<>*/ return arr.length - 1 <= length + var length = /*<>*/ param[1], arr = param[2]; + /*<>*/ return arr.length - 1 <= length ? 0 - : (param[1] = length + 1 | 0, arr[length + 1] = v, 1) /*<>*/ ; + : (param[1] = length + 1 | 0, arr[length + 1] = v, 1) /*<>*/ ; } function add_last(a, x){ - /*<>*/ if(add_last_if_room(a, x)) - /*<>*/ return 0; - /*<>*/ for(;;){ - /*<>*/ ensure_extra_capacity(a, 1); - var _G_ = /*<>*/ 1 - add_last_if_room(a, x); - /*<>*/ if(! _G_) return _G_; - } - /*<>*/ } + /*<>*/ if(add_last_if_room(a, x)) + /*<>*/ return 0; + /*<>*/ for(;;){ + /*<>*/ ensure_extra_capacity(a, 1); + var _G_ = /*<>*/ 1 - add_last_if_room(a, x); + /*<>*/ if(! _G_) return _G_; + } + /*<>*/ } function append_list(a, li$0){ - var li = /*<>*/ li$0; + var li = /*<>*/ li$0; for(;;){ - if(! li) /*<>*/ return 0; - var xs = /*<>*/ li[2], x = li[1]; - /*<>*/ add_last(a, x); - /*<>*/ li = xs; + if(! li) /*<>*/ return 0; + var xs = /*<>*/ li[2], x = li[1]; + /*<>*/ add_last(a, x); + /*<>*/ li = xs; } - /*<>*/ } + /*<>*/ } function append_iter(a, iter, b){ - /*<>*/ return caml_call2 + /*<>*/ return caml_call2 (iter, function(x){ - /*<>*/ return add_last(a, x) /*<>*/ ; + /*<>*/ return add_last(a, x) /*<>*/ ; }, - b) /*<>*/ ; + b) /*<>*/ ; } function append_seq(a, seq){ - /*<>*/ return Stdlib_Seq[4].call + /*<>*/ return Stdlib_Seq[4].call (null, function(x){ - /*<>*/ return add_last(a, x) /*<>*/ ; + /*<>*/ return add_last(a, x) /*<>*/ ; }, - seq) /*<>*/ ; + seq) /*<>*/ ; } var - _d_ = /*<>*/ [0, _a_, 317, 13], - _e_ = [0, _a_, 327, 8]; + _d_ = /*<>*/ [0, _a_, 351, 13], + _e_ = [0, _a_, 364, 8]; function blit_assume_room (src, src_pos, src_length, dst, dst_pos, dst_length, blit_length){ var - src_arr = /*<>*/ src[2], - dst_arr = /*<>*/ dst[2], - _E_ = /*<>*/ "blit"; - /*<>*/ check_same_length(_E_, src, src_length); - /*<>*/ check_same_length(_E_, dst, dst_length); - /*<>*/ if(dst_length < (dst_pos + blit_length | 0)) - /*<>*/ dst[1] = dst_pos + blit_length | 0; - var dst_dummy = /*<>*/ dst[3], src_dummy = src[3]; - /*<>*/ if(src_dummy === dst_dummy) - /*<>*/ return Stdlib_Array[9].call - (null, src_arr, src_pos, dst_arr, dst_pos, blit_length) /*<>*/ ; - /*<>*/ _E_ = blit_length < 0; - if(_E_) - ; - else{ - _E_ = src_pos < 0; - if(_E_) - ; + src_arr = /*<>*/ src[2], + dst_arr = /*<>*/ dst[2], + _F_ = /*<>*/ "blit"; + /*<>*/ check_same_length(_F_, src, src_length); + /*<>*/ check_same_length(_F_, dst, dst_length); + /*<>*/ if(dst_length < (dst_pos + blit_length | 0)) + /*<>*/ dst[1] = dst_pos + blit_length | 0; + /*<>*/ try{ + var dst_dummy = dst[3], src_dummy = src[3]; + /*<>*/ if(src_dummy === dst_dummy) + /*<>*/ _F_ = + Stdlib_Array[9].call + (null, src_arr, src_pos, dst_arr, dst_pos, blit_length); else{ - _E_ = (src_pos + blit_length | 0) < 0; - if(_E_) + /*<>*/ _F_ = blit_length < 0; + if(_F_) ; else{ - _E_ = src_arr.length - 1 < (src_pos + blit_length | 0); - if(_E_) + _F_ = src_pos < 0; + if(_F_) ; else{ - _E_ = dst_pos < 0; - if(_E_) + _F_ = (src_pos + blit_length | 0) < 0; + if(_F_) ; else{ - _E_ = (dst_pos + blit_length | 0) < 0; - _E_ ||= dst_arr.length - 1 < (dst_pos + blit_length | 0); + _F_ = src_arr.length - 1 < (src_pos + blit_length | 0); + if(_F_) + ; + else{ + _F_ = dst_pos < 0; + if(_F_) + ; + else{ + _F_ = (dst_pos + blit_length | 0) < 0; + _F_ ||= dst_arr.length - 1 < (dst_pos + blit_length | 0); + } + } } } } + if(_F_) + /*<>*/ throw caml_maybe_attach_backtrace + ([0, Assert_failure, _d_], 1); + /*<>*/ if(src_arr === dst_arr) + throw caml_maybe_attach_backtrace([0, Assert_failure, _e_], 1); + /*<>*/ _F_ = blit_length - 1 | 0; + if(_F_ >= 0){ + var i = 0; + for(;;){ + var v = /*<>*/ src_arr[(src_pos + i | 0) + 1]; + /*<>*/ if(v === src_dummy) + /*<>*/ throw caml_maybe_attach_backtrace + ([0, Dummy_found, src_pos + i | 0], 1); + /*<>*/ dst_arr[(dst_pos + i | 0) + 1] = v; + var _G_ = /*<>*/ i + 1 | 0; + if(_F_ === i) break; + i = _G_; + } + } + /*<>*/ _F_ = 0; } + return _F_; } - if(_E_) - /*<>*/ throw caml_maybe_attach_backtrace - ([0, Assert_failure, _d_], 1); - /*<>*/ if(src_arr === dst_arr) - throw caml_maybe_attach_backtrace([0, Assert_failure, _e_], 1); - var _F_ = /*<>*/ blit_length - 1 | 0; - if(_F_ >= 0){ - var i = 0; - for(;;){ - /*<>*/ dst_arr[(dst_pos + i | 0) + 1] = src_arr[(src_pos + i | 0) + 1]; - var _G_ = /*<>*/ i + 1 | 0; - if(_F_ === i) break; - i = _G_; - } + catch(exn$0){ + var exn = /*<>*/ caml_wrap_exception(exn$0); + if(exn[1] !== Dummy_found) throw caml_maybe_attach_backtrace(exn, 0); + var i$0 = exn[2]; + /*<>*/ return missing_element(i$0, src_length) /*<>*/ ; } - /*<>*/ return 0; - /*<>*/ } + } var _a_ = /*<>*/ "..", _s_ = - /*<>*/ [0, + /*<>*/ [0, [11, "Dynarray.blit: invalid blit length (", [4, 0, 0, 0, [12, 41, 0]]], "Dynarray.blit: invalid blit length (%d)"], _t_ = @@ -32947,747 +34787,782 @@ [11, ") in target dynarray of length ", [4, 0, 0, 0, 0]]]]]], "Dynarray.blit: invalid target region (%d..%d) in target dynarray of length %d"]; function blit(src, src_pos, dst, dst_pos, len){ - var src_length = /*<>*/ src[1], dst_length = dst[1]; - /*<>*/ if(len < 0) - /*<>*/ caml_call1 + var src_length = /*<>*/ src[1], dst_length = dst[1]; + /*<>*/ if(len < 0) + /*<>*/ caml_call1 (Stdlib_Printf[10].call(null, Stdlib[1], _s_), len); var - _E_ = /*<>*/ src_pos < 0, - _E_ = _E_ || src_length < (src_pos + len | 0); - if(_E_) - /*<>*/ caml_call3 + _F_ = /*<>*/ src_pos < 0, + _F_ = _F_ || src_length < (src_pos + len | 0); + if(_F_) + /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _t_), src_pos, src_pos + len | 0, src_length); - /*<>*/ _E_ = dst_pos < 0; - _E_ ||= dst_length < dst_pos; - if(_E_) - /*<>*/ caml_call3 + /*<>*/ _F_ = dst_pos < 0; + _F_ ||= dst_length < dst_pos; + if(_F_) + /*<>*/ caml_call3 (Stdlib_Printf[10].call(null, Stdlib[1], _u_), dst_pos, dst_pos + len | 0, dst_length); - /*<>*/ ensure_capacity(dst, dst_pos + len | 0); - /*<>*/ return blit_assume_room - (src, src_pos, src_length, dst, dst_pos, dst_length, len) /*<>*/ ; - } - function append_array_if_room(_E_, src){ - var - length_a = /*<>*/ _E_[1], - arr = _E_[2], - length_b = /*<>*/ src.length - 1; - /*<>*/ if(arr.length - 1 < (length_a + length_b | 0)) - /*<>*/ return 0; - /*<>*/ _E_[1] = length_a + length_b | 0; - /*<>*/ _E_ = Stdlib_Obj[17]; - if(caml_obj_tag(src) !== _E_) - /*<>*/ Stdlib_Array[9].call + /*<>*/ ensure_capacity(dst, dst_pos + len | 0); + /*<>*/ return blit_assume_room + (src, src_pos, src_length, dst, dst_pos, dst_length, len) /*<>*/ ; + } + function append_array_if_room(_D_, src){ + var + length_a = /*<>*/ _D_[1], + arr = _D_[2], + length_b = /*<>*/ src.length - 1; + /*<>*/ if(arr.length - 1 < (length_a + length_b | 0)) + /*<>*/ return 0; + /*<>*/ _D_[1] = length_a + length_b | 0; + /*<>*/ _D_ = Stdlib_Obj[17]; + if(caml_obj_tag(src) !== _D_) + /*<>*/ Stdlib_Array[9].call (null, src, 0, arr, length_a, length_b); else{ - /*<>*/ _E_ = length_b - 1 | 0; - if(_E_ >= 0){ + /*<>*/ _D_ = length_b - 1 | 0; + if(_D_ >= 0){ var i = 0; for(;;){ var - _D_ = /*<>*/ i | 0, - v = /*<>*/ caml_check_bound(src, _D_)[_D_ + 1], - _D_ = /*<>*/ length_a + i | 0; - /*<>*/ caml_check_bound(arr, _D_)[_D_ + 1] = v; - /*<>*/ _D_ = i + 1 | 0; - if(_E_ === i) break; - i = _D_; + _E_ = /*<>*/ i | 0, + _F_ = /*<>*/ length_a + i | 0, + _E_ = /*<>*/ caml_check_bound(src, _E_)[_E_ + 1]; + /*<>*/ caml_check_bound(arr, _F_)[_F_ + 1] = _E_; + /*<>*/ _E_ = i + 1 | 0; + if(_D_ === i) break; + i = _E_; } } } - /*<>*/ return 1; - /*<>*/ } + /*<>*/ return 1; + /*<>*/ } function append_array(a, b){ - /*<>*/ if(append_array_if_room(a, b)) - /*<>*/ return 0; - /*<>*/ for(;;){ - /*<>*/ ensure_extra_capacity(a, b.length - 1); - var _D_ = /*<>*/ 1 - append_array_if_room(a, b); - /*<>*/ if(! _D_) return _D_; - } - /*<>*/ } + /*<>*/ if(append_array_if_room(a, b)) + /*<>*/ return 0; + /*<>*/ for(;;){ + /*<>*/ ensure_extra_capacity(a, b.length - 1); + var _D_ = /*<>*/ 1 - append_array_if_room(a, b); + /*<>*/ if(! _D_) return _D_; + } + /*<>*/ } var cst_append = /*<>*/ "append"; function append_if_room(param, b, length_b){ - var length_a = /*<>*/ param[1], arr_a = param[2]; - /*<>*/ return arr_a.length - 1 + var length_a = /*<>*/ param[1], arr_a = param[2]; + /*<>*/ return arr_a.length - 1 < (length_a + length_b | 0) ? 0 - : ( /*<>*/ blit_assume_room + : ( /*<>*/ blit_assume_room (b, 0, length_b, param, length_a, length_a, length_b), - /*<>*/ check_same_length + /*<>*/ check_same_length (cst_append, b, length_b), - 1) /*<>*/ ; + 1) /*<>*/ ; } function append(a, b){ - var length_b = /*<>*/ b[1]; - /*<>*/ if(append_if_room(a, b, length_b)) - /*<>*/ return 0; - /*<>*/ for(;;){ - /*<>*/ ensure_extra_capacity(a, length_b); - /*<>*/ check_same_length(cst_append, b, length_b); - var _D_ = /*<>*/ 1 - append_if_room(a, b, length_b); - /*<>*/ if(! _D_) return _D_; - } - /*<>*/ } - function iter(f, k, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var _C_ = /*<>*/ length - 1 | 0; + var length_b = /*<>*/ b[1]; + /*<>*/ if(append_if_room(a, b, length_b)) + /*<>*/ return 0; + /*<>*/ for(;;){ + /*<>*/ ensure_extra_capacity(a, length_b); + /*<>*/ check_same_length(cst_append, b, length_b); + var _D_ = /*<>*/ 1 - append_if_room(a, b, length_b); + /*<>*/ if(! _D_) return _D_; + } + /*<>*/ } + function iter(fname, f, a){ + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var _C_ = /*<>*/ length - 1 | 0; if(_C_ >= 0){ var i = 0; for(;;){ - /*<>*/ /*<>*/ caml_call1 - (k, /*<>*/ unsafe_get(arr, dummy, i, length)); - var _D_ = /*<>*/ i + 1 | 0; + /*<>*/ /*<>*/ caml_call1 + (f, /*<>*/ unsafe_get(arr, dummy, i, length)); + var _D_ = /*<>*/ i + 1 | 0; if(_C_ === i) break; i = _D_; } } - /*<>*/ return check_same_length(f, a, length) /*<>*/ ; + /*<>*/ return check_same_length(fname, a, length) /*<>*/ ; } - function iter$0(k, a){ - /*<>*/ return iter("iter", k, a) /*<>*/ ; + function iter$0(f, a){ + /*<>*/ return iter("iter", f, a) /*<>*/ ; } - function iteri(k, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var _B_ = /*<>*/ length - 1 | 0; + function iteri(f, a){ + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var _B_ = /*<>*/ length - 1 | 0; if(_B_ >= 0){ var i = 0; for(;;){ - /*<>*/ /*<>*/ caml_call2 - (k, i, /*<>*/ unsafe_get(arr, dummy, i, length)); - var _C_ = /*<>*/ i + 1 | 0; + /*<>*/ /*<>*/ caml_call2 + (f, i, /*<>*/ unsafe_get(arr, dummy, i, length)); + var _C_ = /*<>*/ i + 1 | 0; if(_B_ === i) break; i = _C_; } } - /*<>*/ return check_same_length("iteri", a, length) /*<>*/ ; + /*<>*/ return check_same_length("iteri", a, length) /*<>*/ ; + } + function rev_iter(f, a){ + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var _B_ = /*<>*/ length - 1 | 0; + if(_B_ >= 0){ + var i = _B_; + for(;;){ + /*<>*/ /*<>*/ caml_call1 + (f, /*<>*/ unsafe_get(arr, dummy, i, length)); + /*<>*/ _B_ = i - 1 | 0; + if(0 === i) break; + i = _B_; + } + } + /*<>*/ return check_same_length("rev_iter", a, length) /*<>*/ ; + } + function rev_iteri(f, a){ + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var _B_ = /*<>*/ length - 1 | 0; + if(_B_ >= 0){ + var i = _B_; + for(;;){ + /*<>*/ /*<>*/ caml_call2 + (f, i, /*<>*/ unsafe_get(arr, dummy, i, length)); + /*<>*/ _B_ = i - 1 | 0; + if(0 === i) break; + i = _B_; + } + } + /*<>*/ return check_same_length + ("rev_iteri", a, length) /*<>*/ ; } function map(f, a){ - var length = /*<>*/ a[1], arr_in = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr_in); + var length = /*<>*/ a[1], arr_in = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr_in); var - arr_out = /*<>*/ caml_array_make(length, dummy), - _A_ = /*<>*/ length - 1 | 0; + arr_out = /*<>*/ caml_array_make(length, dummy), + _A_ = /*<>*/ length - 1 | 0; if(_A_ >= 0){ var i = 0; for(;;){ - var - v = - /*<>*/ /*<>*/ caml_call1 - (f, - /*<>*/ unsafe_get(arr_in, dummy, i, length)); - /*<>*/ arr_out[i + 1] = v; - var _B_ = /*<>*/ i + 1 | 0; + /*<>*/ arr_out[i + 1] = + /*<>*/ caml_call1 + (f, /*<>*/ unsafe_get(arr_in, dummy, i, length)); + var _B_ = /*<>*/ i + 1 | 0; if(_A_ === i) break; i = _B_; } } - /*<>*/ check_same_length("map", a, length); - /*<>*/ return [0, length, arr_out, dummy]; - /*<>*/ } + /*<>*/ check_same_length("map", a, length); + /*<>*/ return [0, length, arr_out, dummy]; + /*<>*/ } function mapi(f, a){ - var length = /*<>*/ a[1], arr_in = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr_in); var - arr_out = /*<>*/ caml_array_make(length, dummy), - _z_ = /*<>*/ length - 1 | 0; + length = /*<>*/ a[1], + arr_in = a[2], + dummy = a[3]; + /*<>*/ check_valid_length(length, arr_in); + var + arr_out = /*<>*/ caml_array_make(length, dummy), + _z_ = /*<>*/ length - 1 | 0; if(_z_ >= 0){ var i = 0; for(;;){ - var - v = - /*<>*/ /*<>*/ caml_call2 - (f, - i, - /*<>*/ unsafe_get(arr_in, dummy, i, length)); - /*<>*/ arr_out[i + 1] = v; - var _A_ = /*<>*/ i + 1 | 0; + /*<>*/ arr_out[i + 1] = + /*<>*/ caml_call2 + (f, + i, + /*<>*/ unsafe_get(arr_in, dummy, i, length)); + var _A_ = /*<>*/ i + 1 | 0; if(_z_ === i) break; i = _A_; } } - /*<>*/ check_same_length("mapi", a, length); - /*<>*/ return [0, length, arr_out, dummy]; - /*<>*/ } + /*<>*/ check_same_length("mapi", a, length); + /*<>*/ return [0, length, arr_out, dummy]; + /*<>*/ } function fold_left(f, acc, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var _x_ = /*<>*/ length - 1 | 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var _x_ = /*<>*/ length - 1 | 0; if(_x_ < 0) var r$0 = acc; else{ var r = acc, i = 0; for(;;){ var - v = /*<>*/ unsafe_get(arr, dummy, i, length), - _y_ = /*<>*/ caml_call2(f, r, v), - _z_ = /*<>*/ i + 1 | 0; + v = /*<>*/ unsafe_get(arr, dummy, i, length), + _y_ = /*<>*/ caml_call2(f, r, v), + _z_ = /*<>*/ i + 1 | 0; if(_x_ === i){r$0 = _y_; break;} r = _y_; i = _z_; } } - /*<>*/ check_same_length("fold_left", a, length); - /*<>*/ return r$0; - /*<>*/ } + /*<>*/ check_same_length("fold_left", a, length); + /*<>*/ return r$0; + /*<>*/ } function fold_right(f, a, acc){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var _w_ = /*<>*/ length - 1 | 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var _w_ = /*<>*/ length - 1 | 0; if(_w_ < 0) var r$0 = acc; else{ var r = acc, i = _w_; for(;;){ var - v = /*<>*/ unsafe_get(arr, dummy, i, length), - _w_ = /*<>*/ caml_call2(f, v, r), - _x_ = /*<>*/ i - 1 | 0; + v = /*<>*/ unsafe_get(arr, dummy, i, length), + _w_ = /*<>*/ caml_call2(f, v, r), + _x_ = /*<>*/ i - 1 | 0; if(0 === i){r$0 = _w_; break;} r = _w_; i = _x_; } } - /*<>*/ check_same_length("fold_right", a, length); - /*<>*/ return r$0; - /*<>*/ } + /*<>*/ check_same_length("fold_right", a, length); + /*<>*/ return r$0; + /*<>*/ } function exists(p, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 0; + /*<>*/ if(i === length) + var res = /*<>*/ 0; else{ var _w_ = - /*<>*/ /*<>*/ caml_call1 - (p, /*<>*/ unsafe_get(arr, dummy, i, length)); - /*<>*/ if(! _w_){ + /*<>*/ /*<>*/ caml_call1 + (p, /*<>*/ unsafe_get(arr, dummy, i, length)); + /*<>*/ if(! _w_){ var i$0 = i + 1 | 0; i = i$0; continue; } res = _w_; } - /*<>*/ check_same_length("exists", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("exists", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function for_all(p, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 1; + /*<>*/ if(i === length) + var res = /*<>*/ 1; else{ var _w_ = - /*<>*/ /*<>*/ caml_call1 - (p, /*<>*/ unsafe_get(arr, dummy, i, length)); - /*<>*/ if(_w_){ + /*<>*/ /*<>*/ caml_call1 + (p, /*<>*/ unsafe_get(arr, dummy, i, length)); + /*<>*/ if(_w_){ var i$0 = i + 1 | 0; i = i$0; continue; } res = _w_; } - /*<>*/ check_same_length("for_all", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("for_all", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function exists2(p, a1, a2){ var - length1 = /*<>*/ a1[1], + length1 = /*<>*/ a1[1], arr1 = a1[2], dummy1 = a1[3], - length2 = /*<>*/ a2[1], + length2 = /*<>*/ a2[1], arr2 = a2[2], dummy2 = a2[3]; - /*<>*/ check_valid_length(length1, arr1); - /*<>*/ check_valid_length(length2, arr2); + /*<>*/ check_valid_length(length1, arr1); + /*<>*/ check_valid_length(length2, arr2); var cst_exists2 = /*<>*/ "exists2"; - /*<>*/ if(length1 !== length2) - /*<>*/ different_lengths + /*<>*/ if(length1 !== length2) + /*<>*/ different_lengths (cst_exists2, length1, length2); - var i = /*<>*/ 0; + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length1) - var res = /*<>*/ 0; + /*<>*/ if(i === length1) + var res = /*<>*/ 0; else{ var - _w_ = /*<>*/ unsafe_get(arr2, dummy2, i, length1), + _w_ = /*<>*/ unsafe_get(arr2, dummy2, i, length1), _w_ = - /*<>*/ /*<>*/ caml_call2 + /*<>*/ /*<>*/ caml_call2 (p, - /*<>*/ unsafe_get(arr1, dummy1, i, length1), + /*<>*/ unsafe_get(arr1, dummy1, i, length1), _w_); - /*<>*/ if(! _w_){ + /*<>*/ if(! _w_){ var i$0 = i + 1 | 0; i = i$0; continue; } res = _w_; } - /*<>*/ check_same_length(cst_exists2, a1, length1); - /*<>*/ check_same_length(cst_exists2, a2, length2); - /*<>*/ return res; + /*<>*/ check_same_length(cst_exists2, a1, length1); + /*<>*/ check_same_length(cst_exists2, a2, length2); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function for_all2(p, a1, a2){ var - length1 = /*<>*/ a1[1], + length1 = /*<>*/ a1[1], arr1 = a1[2], dummy1 = a1[3], - length2 = /*<>*/ a2[1], + length2 = /*<>*/ a2[1], arr2 = a2[2], dummy2 = a2[3]; - /*<>*/ check_valid_length(length1, arr1); - /*<>*/ check_valid_length(length2, arr2); + /*<>*/ check_valid_length(length1, arr1); + /*<>*/ check_valid_length(length2, arr2); var cst_for_all2 = /*<>*/ "for_all2"; - /*<>*/ if(length1 !== length2) - /*<>*/ different_lengths + /*<>*/ if(length1 !== length2) + /*<>*/ different_lengths (cst_for_all2, length1, length2); - var i = /*<>*/ 0; + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length1) - var res = /*<>*/ 1; + /*<>*/ if(i === length1) + var res = /*<>*/ 1; else{ var - _w_ = /*<>*/ unsafe_get(arr2, dummy2, i, length1), + _w_ = /*<>*/ unsafe_get(arr2, dummy2, i, length1), _w_ = - /*<>*/ /*<>*/ caml_call2 + /*<>*/ /*<>*/ caml_call2 (p, - /*<>*/ unsafe_get(arr1, dummy1, i, length1), + /*<>*/ unsafe_get(arr1, dummy1, i, length1), _w_); - /*<>*/ if(_w_){ + /*<>*/ if(_w_){ var i$0 = i + 1 | 0; i = i$0; continue; } res = _w_; } - /*<>*/ check_same_length(cst_for_all2, a1, length1); - /*<>*/ check_same_length(cst_for_all2, a2, length2); - /*<>*/ return res; + /*<>*/ check_same_length(cst_for_all2, a1, length1); + /*<>*/ check_same_length(cst_for_all2, a2, length2); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function filter(f, a){ - var b = /*<>*/ create(0); - /*<>*/ iter + var b = /*<>*/ create(0); + /*<>*/ iter ("filter", function(x){ - var _w_ = /*<>*/ caml_call1(f, x); - /*<>*/ return _w_ - ? /*<>*/ add_last(b, x) - : _w_ /*<>*/ ; + var _w_ = /*<>*/ caml_call1(f, x); + /*<>*/ return _w_ + ? /*<>*/ add_last(b, x) + : _w_ /*<>*/ ; }, a); - /*<>*/ return b; - /*<>*/ } + /*<>*/ return b; + /*<>*/ } function filter_map(f, a){ - var b = /*<>*/ create(0); - /*<>*/ iter + var b = /*<>*/ create(0); + /*<>*/ iter ("filter_map", function(x){ - var match = /*<>*/ caml_call1(f, x); - /*<>*/ if(! match) - /*<>*/ return 0; - var y = /*<>*/ match[1]; - /*<>*/ return add_last(b, y) /*<>*/ ; + var match = /*<>*/ caml_call1(f, x); + /*<>*/ if(! match) + /*<>*/ return 0; + var y = /*<>*/ match[1]; + /*<>*/ return add_last(b, y) /*<>*/ ; }, a); - /*<>*/ return b; - /*<>*/ } + /*<>*/ return b; + /*<>*/ } function mem(x, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 0; + /*<>*/ if(i === length) + var res = /*<>*/ 0; else{ - /*<>*/ if + /*<>*/ if (0 !== - /*<>*/ runtime.caml_compare - ( /*<>*/ unsafe_get(arr, dummy, i, length), x)){ - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ runtime.caml_compare + ( /*<>*/ unsafe_get(arr, dummy, i, length), x)){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue; } - /*<>*/ res = 1; + /*<>*/ res = 1; } - /*<>*/ check_same_length("mem", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("mem", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function memq(x, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 0; + /*<>*/ if(i === length) + var res = /*<>*/ 0; else{ - /*<>*/ if(unsafe_get(arr, dummy, i, length) !== x){ - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(unsafe_get(arr, dummy, i, length) !== x){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue; } - /*<>*/ res = 1; + /*<>*/ res = 1; } - /*<>*/ check_same_length("memq", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("memq", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function find_opt(p, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 0; + /*<>*/ if(i === length) + var res = /*<>*/ 0; else{ - var x = /*<>*/ unsafe_get(arr, dummy, i, length); - /*<>*/ if(! caml_call1(p, x)){ - var i$0 = /*<>*/ i + 1 | 0; + var x = /*<>*/ unsafe_get(arr, dummy, i, length); + /*<>*/ if(! caml_call1(p, x)){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue; } - /*<>*/ res = [0, x]; + /*<>*/ res = [0, x]; } - /*<>*/ check_same_length("find_opt", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("find_opt", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function find_index(p, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 0; + /*<>*/ if(i === length) + var res = /*<>*/ 0; else{ - var x = /*<>*/ unsafe_get(arr, dummy, i, length); - /*<>*/ if(! caml_call1(p, x)){ - var i$0 = /*<>*/ i + 1 | 0; + var x = /*<>*/ unsafe_get(arr, dummy, i, length); + /*<>*/ if(! caml_call1(p, x)){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue; } - /*<>*/ res = [0, i]; + /*<>*/ res = [0, i]; } - /*<>*/ check_same_length("find_index", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("find_index", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function find_map(p, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 0; + /*<>*/ if(i === length) + var res = /*<>*/ 0; else{ var r = - /*<>*/ /*<>*/ caml_call1 - (p, /*<>*/ unsafe_get(arr, dummy, i, length)); - /*<>*/ if(! r){ - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ /*<>*/ caml_call1 + (p, /*<>*/ unsafe_get(arr, dummy, i, length)); + /*<>*/ if(! r){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue; } - /*<>*/ res = r; + /*<>*/ res = r; } - /*<>*/ check_same_length("find_map", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("find_map", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function find_mapi(p, a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); - var i = /*<>*/ 0; + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var res = /*<>*/ 0; + /*<>*/ if(i === length) + var res = /*<>*/ 0; else{ var r = - /*<>*/ /*<>*/ caml_call2 + /*<>*/ /*<>*/ caml_call2 (p, i, - /*<>*/ unsafe_get(arr, dummy, i, length)); - /*<>*/ if(! r){ - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ unsafe_get(arr, dummy, i, length)); + /*<>*/ if(! r){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue; } - /*<>*/ res = r; + /*<>*/ res = r; } - /*<>*/ check_same_length("find_mapi", a, length); - /*<>*/ return res; + /*<>*/ check_same_length("find_mapi", a, length); + /*<>*/ return res; } - /*<>*/ } + /*<>*/ } function equal(eq, a1, a2){ var - length = /*<>*/ a1[1], + length = /*<>*/ a1[1], arr1 = a1[2], dum1 = a1[3], - len2 = /*<>*/ a2[1], + len2 = /*<>*/ a2[1], arr2 = a2[2], dum2 = a2[3]; - /*<>*/ if(length !== len2) - /*<>*/ return 0; - /*<>*/ check_valid_length(length, arr1); - /*<>*/ check_valid_length(length, arr2); - var i = /*<>*/ 0; + /*<>*/ if(length !== len2) + /*<>*/ return 0; + /*<>*/ check_valid_length(length, arr1); + /*<>*/ check_valid_length(length, arr2); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var r = /*<>*/ 1; + /*<>*/ if(i === length) + var r = /*<>*/ 1; else{ var - _w_ = /*<>*/ unsafe_get(arr2, dum2, i, length), + _w_ = /*<>*/ unsafe_get(arr2, dum2, i, length), _w_ = - /*<>*/ /*<>*/ caml_call2 + /*<>*/ /*<>*/ caml_call2 (eq, - /*<>*/ unsafe_get(arr1, dum1, i, length), + /*<>*/ unsafe_get(arr1, dum1, i, length), _w_); - /*<>*/ if(_w_){ + /*<>*/ if(_w_){ var i$0 = i + 1 | 0; i = i$0; continue; } r = _w_; } - /*<>*/ _w_ = "equal"; + /*<>*/ _w_ = "equal"; check_same_length(_w_, a1, length); - /*<>*/ check_same_length(_w_, a2, length); - /*<>*/ return r; + /*<>*/ check_same_length(_w_, a2, length); + /*<>*/ return r; } - /*<>*/ } + /*<>*/ } function compare(cmp, a1, a2){ var - length = /*<>*/ a1[1], + length = /*<>*/ a1[1], arr1 = a1[2], dum1 = a1[3], - len2 = /*<>*/ a2[1], + len2 = /*<>*/ a2[1], arr2 = a2[2], dum2 = a2[3]; - /*<>*/ if(length !== len2) - /*<>*/ return length - len2 | 0; - /*<>*/ check_valid_length(length, arr1); - /*<>*/ check_valid_length(length, arr2); - var i = /*<>*/ 0; + /*<>*/ if(length !== len2) + /*<>*/ return length - len2 | 0; + /*<>*/ check_valid_length(length, arr1); + /*<>*/ check_valid_length(length, arr2); + var i = /*<>*/ 0; for(;;){ - /*<>*/ if(i === length) - var r = /*<>*/ 0; + /*<>*/ if(i === length) + var r = /*<>*/ 0; else{ var - _w_ = /*<>*/ unsafe_get(arr2, dum2, i, length), + _w_ = /*<>*/ unsafe_get(arr2, dum2, i, length), c = - /*<>*/ /*<>*/ caml_call2 + /*<>*/ /*<>*/ caml_call2 (cmp, - /*<>*/ unsafe_get(arr1, dum1, i, length), + /*<>*/ unsafe_get(arr1, dum1, i, length), _w_); - /*<>*/ if(0 === c){ - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ if(0 === c){ + var i$0 = /*<>*/ i + 1 | 0; i = i$0; continue; } - /*<>*/ r = c; + /*<>*/ r = c; } - /*<>*/ _w_ = "compare"; + /*<>*/ _w_ = "compare"; check_same_length(_w_, a1, length); - /*<>*/ check_same_length(_w_, a2, length); - /*<>*/ return r; + /*<>*/ check_same_length(_w_, a2, length); + /*<>*/ return r; } - /*<>*/ } + /*<>*/ } function of_array(a){ var - length = /*<>*/ a.length - 1, - arr = /*<>*/ copy_from_array(a, dummy); - /*<>*/ return [0, length, arr, dummy]; - /*<>*/ } + length = /*<>*/ a.length - 1, + arr = /*<>*/ copy_from_array(a, dummy); + /*<>*/ return [0, length, arr, dummy]; + /*<>*/ } function to_array(a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); var res = - /*<>*/ Stdlib_Array[1].call + /*<>*/ Stdlib_Array[1].call (null, length, function(i){ - /*<>*/ return unsafe_get(arr, dummy, i, length) /*<>*/ ; + /*<>*/ return unsafe_get(arr, dummy, i, length) /*<>*/ ; }); - /*<>*/ check_same_length("to_array", a, length); - /*<>*/ return res; - /*<>*/ } + /*<>*/ check_same_length("to_array", a, length); + /*<>*/ return res; + /*<>*/ } function of_list(li){ var - a = /*<>*/ Stdlib_Array[11].call(null, li), - length = /*<>*/ a.length - 1, - _w_ = /*<>*/ Stdlib_Obj[17], + a = /*<>*/ Stdlib_Array[11].call(null, li), + length = /*<>*/ a.length - 1, + _w_ = /*<>*/ Stdlib_Obj[17], arr = caml_obj_tag(a) !== _w_ ? a - : /*<>*/ copy_from_array(a, dummy); - /*<>*/ return [0, length, arr, dummy]; - /*<>*/ } + : /*<>*/ copy_from_array(a, dummy); + /*<>*/ return [0, length, arr, dummy]; + /*<>*/ } function to_list(a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); var - _w_ = /*<>*/ length - 1 | 0, - _v_ = /*<>*/ 0; - /*<>*/ if(_w_ < 0) + _w_ = /*<>*/ length - 1 | 0, + _v_ = /*<>*/ 0; + /*<>*/ if(_w_ < 0) var l$0 = _v_; else{ var l = _v_, i = _w_; for(;;){ - /*<>*/ _v_ = + /*<>*/ _v_ = [0, unsafe_get(arr, dummy, i, length), l]; - /*<>*/ _w_ = i - 1 | 0; + /*<>*/ _w_ = i - 1 | 0; if(0 === i){l$0 = _v_; break;} l = _v_; i = _w_; } } - /*<>*/ check_same_length("to_list", a, length); - /*<>*/ return l$0; - /*<>*/ } + /*<>*/ check_same_length("to_list", a, length); + /*<>*/ return l$0; + /*<>*/ } function of_seq(seq){ - var init = /*<>*/ create(0); - /*<>*/ append_seq(init, seq); - /*<>*/ return init; - /*<>*/ } + var init = /*<>*/ create(0); + /*<>*/ append_seq(init, seq); + /*<>*/ return init; + /*<>*/ } function to_seq(a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); function aux(i){ - /*<>*/ return function(param){ - /*<>*/ check_same_length("to_seq", a, length); - /*<>*/ if(length <= i) - /*<>*/ return 0; - var v = /*<>*/ unsafe_get(arr, dummy, i, length); - /*<>*/ return [0, v, aux(i + 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; - /*<>*/ } - /*<>*/ return aux(0) /*<>*/ ; + /*<>*/ return function(param){ + /*<>*/ check_same_length("to_seq", a, length); + /*<>*/ if(length <= i) + /*<>*/ return 0; + var v = /*<>*/ unsafe_get(arr, dummy, i, length); + /*<>*/ return [0, v, aux(i + 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; + /*<>*/ } + /*<>*/ return aux(0) /*<>*/ ; } function to_seq_reentrant(a){ function aux(i){ - /*<>*/ return function(param){ - /*<>*/ if(a[1] <= i) - /*<>*/ return 0; - var v = /*<>*/ get(a, i); - /*<>*/ return [0, v, aux(i + 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; - /*<>*/ } - /*<>*/ return aux(0) /*<>*/ ; + /*<>*/ return function(param){ + /*<>*/ if(a[1] <= i) + /*<>*/ return 0; + var v = /*<>*/ get(a, i); + /*<>*/ return [0, v, aux(i + 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; + /*<>*/ } + /*<>*/ return aux(0) /*<>*/ ; } function to_seq_rev(a){ - var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; - /*<>*/ check_valid_length(length, arr); + var length = /*<>*/ a[1], arr = a[2], dummy = a[3]; + /*<>*/ check_valid_length(length, arr); function aux(i){ - /*<>*/ return function(param){ - /*<>*/ check_same_length("to_seq_rev", a, length); - /*<>*/ if(0 > i) - /*<>*/ return 0; - var v = /*<>*/ unsafe_get(arr, dummy, i, length); - /*<>*/ return [0, v, aux(i - 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; - /*<>*/ } - /*<>*/ return aux(length - 1 | 0) /*<>*/ ; + /*<>*/ return function(param){ + /*<>*/ check_same_length("to_seq_rev", a, length); + /*<>*/ if(0 > i) + /*<>*/ return 0; + var v = /*<>*/ unsafe_get(arr, dummy, i, length); + /*<>*/ return [0, v, aux(i - 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; + /*<>*/ } + /*<>*/ return aux(length - 1 | 0) /*<>*/ ; } function to_seq_rev_reentrant(a){ function aux(i){ - /*<>*/ return function(param){ - /*<>*/ if(0 > i) - /*<>*/ return 0; - /*<>*/ if(a[1] <= i) - /*<>*/ return aux(a[1] - 1 | 0)(0) /*<>*/ ; - var v = /*<>*/ get(a, i); - /*<>*/ return [0, v, aux(i - 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; - /*<>*/ } - /*<>*/ return aux(a[1] - 1 | 0) /*<>*/ ; + /*<>*/ return function(param){ + /*<>*/ if(0 > i) + /*<>*/ return 0; + /*<>*/ if(a[1] <= i) + /*<>*/ return aux(a[1] - 1 | 0)(0) /*<>*/ ; + var v = /*<>*/ get(a, i); + /*<>*/ return [0, v, aux(i - 1 | 0)] /*<>*/ ; /*<>*/ } /*<>*/ ; + /*<>*/ } + /*<>*/ return aux(a[1] - 1 | 0) /*<>*/ ; } function unsafe_to_iarray(capacity, f){ - var a$0 = /*<>*/ create(0); - /*<>*/ set_capacity(a$0, capacity); - /*<>*/ caml_call1(f, a$0); + var a$0 = /*<>*/ create(0); + /*<>*/ set_capacity(a$0, capacity); + /*<>*/ caml_call1(f, a$0); var - length = /*<>*/ a$0[1], - arr$0 = a$0[2], + length = /*<>*/ a$0[1], + arr = a$0[2], dummy = a$0[3]; - /*<>*/ reset(a$0); - var capacity$0 = /*<>*/ arr$0.length - 1; - /*<>*/ check_valid_length(length, arr$0); + /*<>*/ reset(a$0); + var capacity$0 = /*<>*/ arr.length - 1; + /*<>*/ check_valid_length(length, arr); var values = - /*<>*/ length === capacity$0 - ? arr$0 - : /*<>*/ prefix(arr$0, length); - /*<>*/ try{ - /*<>*/ if(0 === values.length - 1) - var arr = values; - else{ - var _u_ = /*<>*/ Stdlib_Obj[16]; - if - ( /*<>*/ caml_obj_tag - ( /*<>*/ caml_check_bound(values, 0)[1]) - !== _u_) - /*<>*/ arr = values; - else{ - var - n = /*<>*/ values.length - 1, - a = - /*<>*/ /*<>*/ caml_array_make - (n, /*<>*/ caml_check_bound(values, 0)[1]), - _u_ = /*<>*/ n - 1 | 0; - if(_u_ < 1) - arr = a; - else{ - var i = 1; + /*<>*/ length === capacity$0 + ? arr + : /*<>*/ prefix(arr, length); + /*<>*/ try{ + var n = /*<>*/ values.length - 1; + a: + { + /*<>*/ if(0 !== n){ + var _u_ = /*<>*/ Stdlib_Obj[16]; + if + ( /*<>*/ caml_obj_tag + ( /*<>*/ caml_check_bound(values, 0)[1]) + === _u_){ + var + a = + /*<>*/ /*<>*/ caml_array_make + (n, /*<>*/ caml_check_bound(values, 0)[1]), + _u_ = /*<>*/ n - 1 | 0; + if(_u_ < 1){_u_ = a; break a;} + var i$0 = 1; for(;;){ - var v = /*<>*/ values[i + 1]; - /*<>*/ a[i + 1] = v; - var _v_ = /*<>*/ i + 1 | 0; - if(_u_ === i){arr = a; break;} - i = _v_; + var v$0 = /*<>*/ values[i$0 + 1]; + /*<>*/ if(v$0 === dummy) + /*<>*/ throw caml_maybe_attach_backtrace + ([0, Dummy_found, i$0], 1); + /*<>*/ a[i$0 + 1] = v$0; + var _v_ = /*<>*/ i$0 + 1 | 0; + if(_u_ === i$0){_u_ = a; break a;} + i$0 = _v_; } } } - } - /*<>*/ Stdlib_Array[15].call - (null, - function(i, v){ - var _v_ = /*<>*/ v === dummy ? 1 : 0; - /*<>*/ if(_v_) - /*<>*/ throw caml_maybe_attach_backtrace + /*<>*/ _u_ = n - 1 | 0; + if(_u_ < 0) + _u_ = values; + else{ + var i = 0; + for(;;){ + var v = /*<>*/ values[i + 1]; + /*<>*/ if(v === dummy) + /*<>*/ throw caml_maybe_attach_backtrace ([0, Dummy_found, i], 1); - /*<>*/ return _v_; - /*<>*/ }, - arr); - var values$0 = arr; + /*<>*/ _v_ = i + 1 | 0; + if(_u_ === i){_u_ = values; break;} + i = _v_; + } + } + } + var values$0 = _u_; } catch(exn$0){ var exn = /*<>*/ caml_wrap_exception(exn$0); if(exn[1] !== Dummy_found) throw caml_maybe_attach_backtrace(exn, 0); var - i$0 = exn[2], + i$1 = exn[2], values$0 = - /*<>*/ /*<>*/ missing_element - (i$0, length); + /*<>*/ /*<>*/ missing_element + (i$1, length); } - /*<>*/ return values$0; - /*<>*/ } - /*<>*/ runtime.caml_register_global + /*<>*/ return values$0; + /*<>*/ } + /*<>*/ runtime.caml_register_global ([0, create, make, @@ -33712,7 +35587,9 @@ truncate, clear, iter$0, + rev_iter, iteri, + rev_iteri, map, mapi, fold_left, @@ -33893,11 +35770,11 @@ /*<>*/ } function of_array(a){ /*<>*/ return /*<>*/ heapify - ( /*<>*/ Stdlib_Dynarray[43].call(null, a)) /*<>*/ ; + ( /*<>*/ Stdlib_Dynarray[45].call(null, a)) /*<>*/ ; } function of_list(l){ /*<>*/ return /*<>*/ heapify - ( /*<>*/ Stdlib_Dynarray[45].call(null, l)) /*<>*/ ; + ( /*<>*/ Stdlib_Dynarray[47].call(null, l)) /*<>*/ ; } function of_iter(iter, x){ var @@ -33909,7 +35786,7 @@ } var iter_unordered = /*<>*/ Stdlib_Dynarray[23], - fold_unordered = Stdlib_Dynarray[27]; + fold_unordered = Stdlib_Dynarray[29]; return [0, create, length, @@ -34130,11 +36007,11 @@ random = /*<>*/ _o_ ? _o_[1] - : /*<>*/ Stdlib_Hashtbl[17].call(null, 0), + : /*<>*/ Stdlib_Hashtbl[19].call(null, 0), x = /*<>*/ 16; for(;;){ /*<>*/ if(initial_size <= x) break; - /*<>*/ if(Stdlib_Sys[14] < (x * 2 | 0)) break; + /*<>*/ if(Stdlib_Sys[15] < (x * 2 | 0)) break; var x$0 = /*<>*/ x * 2 | 0; x = x$0; } @@ -34235,7 +36112,7 @@ nsize = /*<>*/ osize * 2 | 0; /*<>*/ clean(h); var - _j_ = /*<>*/ nsize < Stdlib_Sys[14] ? 1 : 0, + _j_ = /*<>*/ nsize < Stdlib_Sys[15] ? 1 : 0, _j_ = _j_ ? (osize >>> 1 | 0) <= h[1] ? 1 : 0 : _j_; if(_j_){ var ndata = /*<>*/ caml_array_make(nsize, 0); @@ -34492,7 +36369,7 @@ (null, function(m, b){ var _j_ = /*<>*/ bucket_length(0, b); - /*<>*/ return Stdlib_Int[11].call + /*<>*/ return Stdlib_Int[15].call (null, m, _j_); }, 0, @@ -34536,7 +36413,7 @@ (null, function(m, b){ var _j_ = /*<>*/ bucket_length_alive(0, b); - /*<>*/ return Stdlib_Int[11].call + /*<>*/ return Stdlib_Int[15].call (null, m, _j_); }, 0, @@ -34756,7 +36633,7 @@ function find(b, k){ var match = - /*<>*/ Stdlib_List[41].call + /*<>*/ Stdlib_List[42].call (null, function(_j_){ /*<>*/ return test_key(k, _j_);}, b[1]); @@ -34975,7 +36852,7 @@ function find$0(b, k1, k2){ var match = - /*<>*/ Stdlib_List[41].call + /*<>*/ Stdlib_List[42].call (null, function(_j_){ /*<>*/ return test_keys(k1, k2, _j_); @@ -35277,7 +37154,7 @@ function find$1(b, k){ var match = - /*<>*/ Stdlib_List[41].call + /*<>*/ Stdlib_List[42].call (null, function(_c_){ /*<>*/ return test_keys$0(k, _c_); @@ -35321,7 +37198,7 @@ (globalThis)); //# unitInfo: Provides: Stdlib__Filename -//# unitInfo: Requires: Stdlib, Stdlib__Buffer, Stdlib__Domain, Stdlib__List, Stdlib__Printf, Stdlib__Random, Stdlib__String, Stdlib__Sys +//# unitInfo: Requires: Stdlib, Stdlib__Buffer, Stdlib__Domain, Stdlib__Fun, Stdlib__List, Stdlib__Printf, Stdlib__Random, Stdlib__String, Stdlib__Sys //# shape: Stdlib__Filename:[N,N,N,F(2),F(1),F(1),F(2),F(2),F(2),F(1),F(1),F(1),F(1),F(1),N,F(3),F(5),F(4),F(1),F(1),F(1),F(5)] (function (globalThis){ @@ -35360,6 +37237,7 @@ Stdlib_List = caml_get_global("Stdlib__List"), Stdlib_Buffer = caml_get_global("Stdlib__Buffer"), Stdlib_Sys = caml_get_global("Stdlib__Sys"), + Stdlib_Fun = caml_get_global("Stdlib__Fun"), cst = ""; function generic_basename(is_dir_sep, current_dir_name, name){ /*<>*/ if(name === cst) @@ -35369,7 +37247,7 @@ n = n$3; for(;;){ /*<>*/ if(0 > n) - /*<>*/ return Stdlib_String[16].call + /*<>*/ return Stdlib_String[19].call (null, name, 0, 1) /*<>*/ ; /*<>*/ if(! caml_call2(is_dir_sep, name, n)) break; var n$0 = /*<>*/ n - 1 | 0; @@ -35378,10 +37256,10 @@ var p = /*<>*/ n + 1 | 0, n$1 = n; for(;;){ /*<>*/ if(0 > n$1) - /*<>*/ return Stdlib_String[16].call + /*<>*/ return Stdlib_String[19].call (null, name, 0, p) /*<>*/ ; /*<>*/ if(caml_call2(is_dir_sep, name, n$1)) - /*<>*/ return Stdlib_String[16].call + /*<>*/ return Stdlib_String[19].call (null, name, n$1 + 1 | 0, (p - n$1 | 0) - 1 | 0) /*<>*/ ; var n$2 = /*<>*/ n$1 - 1 | 0; n$1 = n$2; @@ -35395,7 +37273,7 @@ n = n$5; for(;;){ /*<>*/ if(0 > n) - /*<>*/ return Stdlib_String[16].call + /*<>*/ return Stdlib_String[19].call (null, name, 0, 1) /*<>*/ ; /*<>*/ if(! caml_call2(is_dir_sep, name, n)){ var n$1 = /*<>*/ n; @@ -35416,69 +37294,46 @@ } /*<>*/ for(;;){ /*<>*/ if(0 > n$3) - /*<>*/ return Stdlib_String[16].call + /*<>*/ return Stdlib_String[19].call (null, name, 0, 1) /*<>*/ ; /*<>*/ if(! caml_call2(is_dir_sep, name, n$3)) - /*<>*/ return Stdlib_String[16].call + /*<>*/ return Stdlib_String[19].call (null, name, 0, n$3 + 1 | 0) /*<>*/ ; var n$4 = /*<>*/ n$3 - 1 | 0; n$3 = n$4; } /*<>*/ } function is_dir_sep(s, i){ - /*<>*/ return 47 === caml_string_get(s, i) ? 1 : 0 /*<>*/ ; - /*<>*/ } + /*<>*/ return 47 === caml_string_get(s, i) ? 1 : 0 /*<>*/ ; + /*<>*/ } function is_relative(n){ var - _n_ = /*<>*/ caml_ml_string_length(n) < 1 ? 1 : 0, + _n_ = /*<>*/ caml_ml_string_length(n) < 1 ? 1 : 0, _n_ = _n_ - || (47 !== /*<>*/ caml_string_get(n, 0) ? 1 : 0); - /*<>*/ return _n_; - /*<>*/ } - var cst$6 = /*<>*/ "../", cst$5 = "./"; + || (47 !== /*<>*/ caml_string_get(n, 0) ? 1 : 0); + /*<>*/ return _n_; + /*<>*/ } + var cst$5 = /*<>*/ "../", cst$4 = "./"; function is_implicit(n){ - var _n_ = /*<>*/ is_relative(n); - /*<>*/ if(_n_){ - _n_ = caml_ml_string_length(n) < 2 ? 1 : 0; - _n_ ||= - /*<>*/ Stdlib_String[16].call(null, n, 0, 2) - !== cst$5 + var _n_ = /*<>*/ is_relative(n); + /*<>*/ if(_n_){ + /*<>*/ _n_ = + 1 - Stdlib_String[13].call(null, cst$4, n); + /*<>*/ _n_ = + _n_ ? 1 - : 0; - /*<>*/ if(_n_){ - _n_ = caml_ml_string_length(n) < 3 ? 1 : 0; - _n_ ||= - /*<>*/ Stdlib_String[16].call(null, n, 0, 3) - !== cst$6 - ? 1 - : 0; - } + - /*<>*/ Stdlib_String[13].call(null, cst$5, n) + : _n_; } - /*<>*/ return _n_; - /*<>*/ } + /*<>*/ return _n_; + /*<>*/ } function check_suffix(name, suff){ - /*<>*/ return Stdlib_String[12].call(null, suff, name) /*<>*/ ; - } - function chop_suffix_opt(suffix, filename){ - var - len_s = /*<>*/ caml_ml_string_length(suffix), - len_f = caml_ml_string_length(filename); - /*<>*/ if(len_s > len_f) - /*<>*/ return 0; - var - r = - /*<>*/ Stdlib_String[16].call - (null, filename, len_f - len_s | 0, len_s); - /*<>*/ return r === suffix - ? [0, - /*<>*/ Stdlib_String[16].call - (null, filename, 0, len_f - len_s | 0)] - : 0 /*<>*/ ; + /*<>*/ return Stdlib_String[14].call(null, suff, name) /*<>*/ ; } var _a_ = /*<>*/ 0; try{ - /*<>*/ _a_ = runtime.caml_sys_getenv("TMPDIR"); + /*<>*/ _a_ = runtime.caml_sys_getenv("TMPDIR"); var temp_dir_name = _a_; } catch(exn$0){ @@ -35516,67 +37371,66 @@ cst$2 = " <", cst$1 = " >"; function quote_command(cmd, stdin, stdout, stderr, args){ - /*<>*/ if(stderr){ + /*<>*/ if(stderr){ var f = stderr[1]; - /*<>*/ if(caml_equal(stderr, stdout)) - var _m_ = /*<>*/ cst_2_1; + /*<>*/ if(caml_equal(stderr, stdout)) + var _m_ = /*<>*/ cst_2_1; else{ - /*<>*/ _m_ = quote(f); - /*<>*/ _m_ = - /*<>*/ Stdlib[28].call(null, cst_2, _m_); + /*<>*/ _m_ = quote(f); + /*<>*/ _m_ = + /*<>*/ Stdlib[28].call(null, cst_2, _m_); } } else - /*<>*/ _m_ = cst; + /*<>*/ _m_ = cst; if(stdout) var f$0 = stdout[1], - _l_ = /*<>*/ quote(f$0), + _l_ = /*<>*/ quote(f$0), _l_ = - /*<>*/ /*<>*/ Stdlib[28].call + /*<>*/ /*<>*/ Stdlib[28].call (null, cst$1, _l_); else - /*<>*/ _l_ = cst; - /*<>*/ _m_ = Stdlib[28].call(null, _l_, _m_); - /*<>*/ if(stdin) + /*<>*/ _l_ = cst; + /*<>*/ _m_ = Stdlib[28].call(null, _l_, _m_); + /*<>*/ if(stdin) var f$1 = stdin[1], - _l_ = /*<>*/ quote(f$1), + _l_ = /*<>*/ quote(f$1), _l_ = - /*<>*/ /*<>*/ Stdlib[28].call + /*<>*/ /*<>*/ Stdlib[28].call (null, cst$2, _l_); else - /*<>*/ _l_ = cst; - /*<>*/ _m_ = Stdlib[28].call(null, _l_, _m_); - /*<>*/ _l_ = + /*<>*/ _l_ = cst; + /*<>*/ _m_ = Stdlib[28].call(null, _l_, _m_); + /*<>*/ _l_ = Stdlib_List[21].call(null, quote, [0, cmd, args]); - /*<>*/ _l_ = Stdlib_String[7].call(null, cst$3, _l_); - /*<>*/ return Stdlib[28].call(null, _l_, _m_) /*<>*/ ; + /*<>*/ _l_ = Stdlib_String[8].call(null, cst$3, _l_); + /*<>*/ return Stdlib[28].call(null, _l_, _m_) /*<>*/ ; } var _a_ = /*<>*/ ".", current_dir_name = _a_; function basename(_l_){ - /*<>*/ return generic_basename + /*<>*/ return generic_basename (is_dir_sep, current_dir_name, _l_); } function dirname(_l_){ - /*<>*/ return generic_dirname + /*<>*/ return generic_dirname (is_dir_sep, current_dir_name, _l_); } var - cst$4 = /*<>*/ "..", + cst$6 = /*<>*/ "..", _b_ = "/", cst_dev_null = "/dev/null", Unix = - /*<>*/ [0, + /*<>*/ [0, cst_dev_null, current_dir_name, - cst$4, + cst$6, _b_, is_dir_sep, is_relative, is_implicit, check_suffix, - chop_suffix_opt, temp_dir_name, quote, quote_command, @@ -35584,264 +37438,221 @@ dirname]; function is_dir_sep$0(s, i){ var - c = /*<>*/ caml_string_get(s, i), - _l_ = /*<>*/ 47 === c ? 1 : 0; + c = /*<>*/ caml_string_get(s, i), + _l_ = /*<>*/ 47 === c ? 1 : 0; if(_l_) ; else{_l_ = 92 === c ? 1 : 0; _l_ ||= 58 === c ? 1 : 0;} return _l_; - /*<>*/ } + /*<>*/ } function is_relative$0(n){ var - _l_ = /*<>*/ caml_ml_string_length(n) < 1 ? 1 : 0, + _l_ = /*<>*/ caml_ml_string_length(n) < 1 ? 1 : 0, _l_ = _l_ - || (47 !== /*<>*/ caml_string_get(n, 0) ? 1 : 0); - /*<>*/ if(_l_){ + || (47 !== /*<>*/ caml_string_get(n, 0) ? 1 : 0); + /*<>*/ if(_l_){ _l_ = caml_ml_string_length(n) < 1 ? 1 : 0; - _l_ ||= 92 !== /*<>*/ caml_string_get(n, 0) ? 1 : 0; - /*<>*/ if(_l_){ + _l_ ||= 92 !== /*<>*/ caml_string_get(n, 0) ? 1 : 0; + /*<>*/ if(_l_){ _l_ = caml_ml_string_length(n) < 2 ? 1 : 0; - _l_ ||= 58 !== /*<>*/ caml_string_get(n, 1) ? 1 : 0; + _l_ ||= 58 !== /*<>*/ caml_string_get(n, 1) ? 1 : 0; } } - /*<>*/ return _l_; - /*<>*/ } + /*<>*/ return _l_; + /*<>*/ } function is_implicit$0(n){ - var _l_ = /*<>*/ is_relative$0(n); - /*<>*/ if(_l_){ - _l_ = caml_ml_string_length(n) < 2 ? 1 : 0; - _l_ ||= - /*<>*/ Stdlib_String[16].call(null, n, 0, 2) - !== cst$5 - ? 1 - : 0; - /*<>*/ if(_l_){ - _l_ = caml_ml_string_length(n) < 2 ? 1 : 0; - _l_ ||= - /*<>*/ Stdlib_String[16].call(null, n, 0, 2) - !== ".\\" - ? 1 - : 0; - /*<>*/ if(_l_){ - _l_ = caml_ml_string_length(n) < 3 ? 1 : 0; - _l_ ||= - /*<>*/ Stdlib_String[16].call(null, n, 0, 3) - !== cst$6 + var _l_ = /*<>*/ is_relative$0(n); + /*<>*/ if(_l_){ + /*<>*/ _l_ = + 1 - Stdlib_String[13].call(null, cst$4, n); + /*<>*/ if(_l_){ + /*<>*/ _l_ = + 1 - Stdlib_String[13].call(null, ".\\", n); + /*<>*/ if(_l_){ + /*<>*/ _l_ = + 1 - Stdlib_String[13].call(null, cst$5, n); + /*<>*/ _l_ = + _l_ ? 1 - : 0; - /*<>*/ if(_l_){ - _l_ = caml_ml_string_length(n) < 3 ? 1 : 0; - _l_ ||= - /*<>*/ Stdlib_String[16].call(null, n, 0, 3) - !== "..\\" - ? 1 - : 0; - } + - + /*<>*/ Stdlib_String[13].call(null, "..\\", n) + : _l_; } } } - /*<>*/ return _l_; - /*<>*/ } - function check_suffix$0(name, suff){ - var - _l_ = - /*<>*/ caml_ml_string_length(suff) - <= caml_ml_string_length(name) - ? 1 - : 0; - if(_l_) - var - s = - /*<>*/ Stdlib_String[16].call - (null, - name, - /*<>*/ caml_ml_string_length(name) - - caml_ml_string_length(suff) - | 0, - caml_ml_string_length(suff)), - _l_ = /*<>*/ Stdlib_String[27].call(null, suff), - _l_ = - /*<>*/ /*<>*/ Stdlib_String - [27].call - (null, s) - === _l_ - ? 1 - : 0; - /*<>*/ return _l_; - /*<>*/ } - function chop_suffix_opt$0(suffix, filename){ + /*<>*/ return _l_; + /*<>*/ } + function check_suffix$0(filename, suffix){ var - len_s = /*<>*/ caml_ml_string_length(suffix), + len_s = /*<>*/ caml_ml_string_length(suffix), len_f = caml_ml_string_length(filename); - /*<>*/ if(len_s > len_f) - /*<>*/ return 0; + /*<>*/ if(len_s > len_f) + /*<>*/ return 0; var r = - /*<>*/ Stdlib_String[16].call + /*<>*/ Stdlib_String[19].call (null, filename, len_f - len_s | 0, len_s), - _l_ = /*<>*/ Stdlib_String[27].call(null, suffix); - /*<>*/ return Stdlib_String[27].call(null, r) === _l_ - ? [0, - /*<>*/ Stdlib_String[16].call - (null, filename, 0, len_f - len_s | 0)] - : 0 /*<>*/ ; - } + _l_ = /*<>*/ Stdlib_String[46].call(null, suffix); + /*<>*/ return Stdlib_String[46].call(null, r) === _l_ + ? 1 + : 0 /*<>*/ ; + /*<>*/ } var temp_dir_name$0 = - /*<>*/ runtime.caml_sys_temp_dir_name(0); + /*<>*/ runtime.caml_sys_temp_dir_name(0); function quote$0(s){ var - l = /*<>*/ caml_ml_string_length(s), - b = /*<>*/ Stdlib_Buffer[1].call(null, l + 20 | 0); - /*<>*/ Stdlib_Buffer[12].call(null, b, 34); + l = /*<>*/ caml_ml_string_length(s), + b = /*<>*/ Stdlib_Buffer[1].call(null, l + 20 | 0); + /*<>*/ Stdlib_Buffer[12].call(null, b, 34); function loop$0(counter, i$1){ - var i = /*<>*/ i$1; + var i = /*<>*/ i$1; for(;;){ if(i === l) - /*<>*/ return Stdlib_Buffer[12].call(null, b, 34) /*<>*/ ; - var c = /*<>*/ caml_string_get(s, i); - /*<>*/ if(34 === c){ - var _l_ = /*<>*/ 0; + /*<>*/ return Stdlib_Buffer[12].call(null, b, 34) /*<>*/ ; + var c = /*<>*/ caml_string_get(s, i); + /*<>*/ if(34 === c){ + var _l_ = /*<>*/ 0; return counter < 50 ? loop_bs(counter + 1 | 0, _l_, i) - : caml_trampoline_return(loop_bs, [0, _l_, i]) /*<>*/ ; + : caml_trampoline_return(loop_bs, [0, _l_, i]) /*<>*/ ; } - /*<>*/ if(92 === c){ - /*<>*/ _l_ = 0; + /*<>*/ if(92 === c){ + /*<>*/ _l_ = 0; return counter < 50 ? loop_bs(counter + 1 | 0, _l_, i) - : caml_trampoline_return(loop_bs, [0, _l_, i]) /*<>*/ ; + : caml_trampoline_return(loop_bs, [0, _l_, i]) /*<>*/ ; } - /*<>*/ Stdlib_Buffer[12].call(null, b, c); - var i$0 = /*<>*/ i + 1 | 0; + /*<>*/ Stdlib_Buffer[12].call(null, b, c); + var i$0 = /*<>*/ i + 1 | 0; i = i$0; } - /*<>*/ } + /*<>*/ } function loop(i){ - /*<>*/ return /*<>*/ caml_trampoline - ( /*<>*/ loop$0(0, i)) /*<>*/ ; + /*<>*/ return /*<>*/ caml_trampoline + ( /*<>*/ loop$0(0, i)) /*<>*/ ; } function loop_bs(counter, n$1, i$1){ - var n = /*<>*/ n$1, i = i$1; + var n = /*<>*/ n$1, i = i$1; for(;;){ if(i === l){ - /*<>*/ Stdlib_Buffer[12].call(null, b, 34); - /*<>*/ return add_bs(n) /*<>*/ ; + /*<>*/ Stdlib_Buffer[12].call(null, b, 34); + /*<>*/ return add_bs(n) /*<>*/ ; } - var _l_ = /*<>*/ caml_string_get(s, i); - /*<>*/ if(34 === _l_){ - /*<>*/ add_bs((2 * n | 0) + 1 | 0); - /*<>*/ Stdlib_Buffer[12].call(null, b, 34); - /*<>*/ _l_ = i + 1 | 0; + var _l_ = /*<>*/ caml_string_get(s, i); + /*<>*/ if(34 === _l_){ + /*<>*/ add_bs((2 * n | 0) + 1 | 0); + /*<>*/ Stdlib_Buffer[12].call(null, b, 34); + /*<>*/ _l_ = i + 1 | 0; return counter < 50 ? loop$0(counter + 1 | 0, _l_) - : caml_trampoline_return(loop$0, [0, _l_]) /*<>*/ ; + : caml_trampoline_return(loop$0, [0, _l_]) /*<>*/ ; } - /*<>*/ if(92 !== _l_){ - /*<>*/ add_bs(n); - /*<>*/ return counter < 50 + /*<>*/ if(92 !== _l_){ + /*<>*/ add_bs(n); + /*<>*/ return counter < 50 ? loop$0(counter + 1 | 0, i) - : caml_trampoline_return(loop$0, [0, i]) /*<>*/ ; + : caml_trampoline_return(loop$0, [0, i]) /*<>*/ ; } - var i$0 = /*<>*/ i + 1 | 0, n$0 = n + 1 | 0; + var i$0 = /*<>*/ i + 1 | 0, n$0 = n + 1 | 0; n = n$0; i = i$0; } - /*<>*/ } + /*<>*/ } function add_bs(n){ - /*<>*/ if(n >= 1){ + /*<>*/ if(n >= 1){ var j = 1; for(;;){ - /*<>*/ Stdlib_Buffer[12].call(null, b, 92); - var _l_ = /*<>*/ j + 1 | 0; + /*<>*/ Stdlib_Buffer[12].call(null, b, 92); + var _l_ = /*<>*/ j + 1 | 0; if(n === j) break; j = _l_; } } - /*<>*/ } - /*<>*/ loop(0); - /*<>*/ return Stdlib_Buffer[2].call(null, b) /*<>*/ ; + /*<>*/ } + /*<>*/ loop(0); + /*<>*/ return Stdlib_Buffer[2].call(null, b) /*<>*/ ; } var cst$0 = /*<>*/ '"', _c_ = [0, cst$0, 0]; function quote_cmd_filename(f){ var f$0 = - /*<>*/ Stdlib_String[15].call(null, f, 47) - ? /*<>*/ Stdlib_String - [18].call + /*<>*/ Stdlib_String[18].call(null, f, 47) + ? /*<>*/ Stdlib_String + [37].call (null, function(c){ - /*<>*/ return 47 === c ? 92 : c /*<>*/ ; + /*<>*/ return 47 === c ? 92 : c /*<>*/ ; }, f) : f; - /*<>*/ if + /*<>*/ if (! - Stdlib_String[23].call + Stdlib_String[42].call (null, function(param){ - /*<>*/ if(34 !== param && 37 !== param) - /*<>*/ return 0; - /*<>*/ return 1; - /*<>*/ }, + /*<>*/ if(34 !== param && 37 !== param) + /*<>*/ return 0; + /*<>*/ return 1; + /*<>*/ }, f$0)) - /*<>*/ return Stdlib_String[15].call(null, f$0, 32) - ? /*<>*/ Stdlib_String - [7].call + /*<>*/ return Stdlib_String[18].call(null, f$0, 32) + ? /*<>*/ Stdlib_String + [8].call (null, cst, [0, cst$0, [0, f$0, _c_]]) - : f$0 /*<>*/ ; + : f$0 /*<>*/ ; var _l_ = - /*<>*/ Stdlib[28].call + /*<>*/ Stdlib[28].call (null, "Filename.quote_command: bad file name ", f$0); - /*<>*/ return Stdlib[2].call(null, _l_) /*<>*/ ; + /*<>*/ return Stdlib[2].call(null, _l_) /*<>*/ ; } var _d_ = /*<>*/ [0, cst$0, 0]; function quote_command$0(cmd, stdin, stdout, stderr, args){ - /*<>*/ if(stderr){ + /*<>*/ if(stderr){ var f = stderr[1]; - /*<>*/ if(caml_equal(stderr, stdout)) - var _j_ = /*<>*/ cst_2_1; + /*<>*/ if(caml_equal(stderr, stdout)) + var _j_ = /*<>*/ cst_2_1; else{ - /*<>*/ _j_ = quote_cmd_filename(f); - /*<>*/ _j_ = - /*<>*/ Stdlib[28].call(null, cst_2, _j_); + /*<>*/ _j_ = quote_cmd_filename(f); + /*<>*/ _j_ = + /*<>*/ Stdlib[28].call(null, cst_2, _j_); } } else - /*<>*/ _j_ = cst; + /*<>*/ _j_ = cst; _j_ = [0, _j_, _d_]; if(stdout) var f$0 = stdout[1], - _k_ = /*<>*/ quote_cmd_filename(f$0), + _k_ = /*<>*/ quote_cmd_filename(f$0), _k_ = - /*<>*/ /*<>*/ Stdlib[28].call + /*<>*/ /*<>*/ Stdlib[28].call (null, cst$1, _k_); else - /*<>*/ _k_ = cst; + /*<>*/ _k_ = cst; _j_ = [0, _k_, _j_]; if(stdin) var f$1 = stdin[1], - _k_ = /*<>*/ quote_cmd_filename(f$1), + _k_ = /*<>*/ quote_cmd_filename(f$1), _k_ = - /*<>*/ /*<>*/ Stdlib[28].call + /*<>*/ /*<>*/ Stdlib[28].call (null, cst$2, _k_); else - /*<>*/ _k_ = cst; + /*<>*/ _k_ = cst; var _l_ = - /*<>*/ Stdlib_List[21].call(null, quote$0, args), - s = /*<>*/ Stdlib_String[7].call(null, cst$3, _l_), + /*<>*/ Stdlib_List[21].call(null, quote$0, args), + s = /*<>*/ Stdlib_String[8].call(null, cst$3, _l_), b = - /*<>*/ /*<>*/ Stdlib_Buffer[1].call - (null, /*<>*/ caml_ml_string_length(s) + 20 | 0); - /*<>*/ Stdlib_String[30].call + /*<>*/ /*<>*/ Stdlib_Buffer[1].call + (null, /*<>*/ caml_ml_string_length(s) + 20 | 0); + /*<>*/ Stdlib_String[49].call (null, function(c){ a: { - /*<>*/ if(62 <= c){ + /*<>*/ if(62 <= c){ var _l_ = c - 63 | 0; if(60 < _l_ >>> 0){ if(62 <= _l_) break a; @@ -35857,93 +37668,92 @@ switch(c - 33 | 0){case 2:case 3:case 6: break a; } } - /*<>*/ Stdlib_Buffer[12].call(null, b, 94); - /*<>*/ return Stdlib_Buffer[12].call(null, b, c) /*<>*/ ; + /*<>*/ Stdlib_Buffer[12].call(null, b, 94); + /*<>*/ return Stdlib_Buffer[12].call(null, b, c) /*<>*/ ; } - /*<>*/ return Stdlib_Buffer[12].call(null, b, c) /*<>*/ ; + /*<>*/ return Stdlib_Buffer[12].call(null, b, c) /*<>*/ ; }, s); - /*<>*/ _j_ = + /*<>*/ _j_ = [0, cst$3, [0, Stdlib_Buffer[2].call(null, b), [0, _k_, _j_]]]; - /*<>*/ _j_ = + /*<>*/ _j_ = [0, cst$0, [0, quote_cmd_filename(cmd), _j_]]; - /*<>*/ return Stdlib_String[7].call(null, cst, _j_) /*<>*/ ; + /*<>*/ return Stdlib_String[8].call(null, cst, _j_) /*<>*/ ; } function drive_and_path(s){ - var _j_ = /*<>*/ 2 <= caml_ml_string_length(s); + var _j_ = /*<>*/ 2 <= caml_ml_string_length(s); if(_j_){ - /*<>*/ _j_ = caml_string_get(s, 0); + /*<>*/ _j_ = caml_string_get(s, 0); a: { b: { - /*<>*/ if(91 <= _j_){ + /*<>*/ if(91 <= _j_){ if(25 < _j_ - 97 >>> 0) break b; } else if(65 > _j_) break b; - /*<>*/ _j_ = 1; + /*<>*/ _j_ = 1; break a; } - /*<>*/ _j_ = 0; + /*<>*/ _j_ = 0; } - /*<>*/ _j_ = - _j_ ? 58 === /*<>*/ caml_string_get(s, 1) : _j_; + /*<>*/ _j_ = + _j_ ? 58 === /*<>*/ caml_string_get(s, 1) : _j_; } - /*<>*/ if(! _j_) - /*<>*/ return [0, cst, s]; - /*<>*/ _j_ = - /*<>*/ Stdlib_String[16].call + /*<>*/ if(! _j_) + /*<>*/ return [0, cst, s]; + /*<>*/ _j_ = + /*<>*/ Stdlib_String[19].call (null, s, 2, - /*<>*/ caml_ml_string_length(s) - 2 | 0); - /*<>*/ return [0, - Stdlib_String[16].call(null, s, 0, 2), - _j_] /*<>*/ ; - /*<>*/ } + /*<>*/ caml_ml_string_length(s) - 2 | 0); + /*<>*/ return [0, + Stdlib_String[19].call(null, s, 0, 2), + _j_] /*<>*/ ; + /*<>*/ } var current_dir_name$0 = /*<>*/ _a_; function dirname$0(s){ var - match = /*<>*/ drive_and_path(s), - path = /*<>*/ match[2], + match = /*<>*/ drive_and_path(s), + path = /*<>*/ match[2], drive = match[1], dir = - /*<>*/ generic_dirname + /*<>*/ generic_dirname (is_dir_sep$0, current_dir_name$0, path); - /*<>*/ return Stdlib[28].call(null, drive, dir) /*<>*/ ; + /*<>*/ return Stdlib[28].call(null, drive, dir) /*<>*/ ; } function basename$0(s){ - var path = /*<>*/ drive_and_path(s)[2]; - /*<>*/ return generic_basename - (is_dir_sep$0, current_dir_name$0, path) /*<>*/ ; + var path = /*<>*/ drive_and_path(s)[2]; + /*<>*/ return generic_basename + (is_dir_sep$0, current_dir_name$0, path) /*<>*/ ; } var current_dir_name$1 = /*<>*/ _a_; function basename$1(_j_){ - /*<>*/ return generic_basename + /*<>*/ return generic_basename (is_dir_sep$0, current_dir_name$1, _j_); } function dirname$1(_j_){ - /*<>*/ return generic_dirname + /*<>*/ return generic_dirname (is_dir_sep$0, current_dir_name$1, _j_); } var Cygwin = - /*<>*/ [0, + /*<>*/ [0, cst_dev_null, current_dir_name$1, - cst$4, + cst$6, _b_, is_dir_sep$0, is_relative$0, is_implicit$0, check_suffix$0, - chop_suffix_opt$0, temp_dir_name, quote, quote_command, basename$1, dirname$1], - _b_ = Stdlib_Sys[5], + _b_ = Stdlib_Sys[6], Sysdeps = _b_ !== "Cygwin" ? _b_ @@ -35952,13 +37762,12 @@ : [0, "NUL", current_dir_name$0, - cst$4, + cst$6, "\\", is_dir_sep$0, is_relative$0, is_implicit$0, check_suffix$0, - chop_suffix_opt$0, temp_dir_name$0, quote$0, quote_command$0, @@ -35973,168 +37782,179 @@ is_relative$1 = Sysdeps[6], is_implicit$1 = Sysdeps[7], check_suffix$1 = Sysdeps[8], - chop_suffix_opt$1 = Sysdeps[9], - temp_dir_name$1 = Sysdeps[10], - quote$1 = Sysdeps[11], - quote_command$1 = Sysdeps[12], - basename$2 = Sysdeps[13], - dirname$2 = Sysdeps[14]; + temp_dir_name$1 = Sysdeps[9], + quote$1 = Sysdeps[10], + quote_command$1 = Sysdeps[11], + basename$2 = Sysdeps[12], + dirname$2 = Sysdeps[13]; function concat(dirname, filename){ - var l = /*<>*/ caml_ml_string_length(dirname); - /*<>*/ if + var l = /*<>*/ caml_ml_string_length(dirname); + /*<>*/ if (0 !== l - && ! /*<>*/ is_dir_sep$1(dirname, l - 1 | 0)){ + && ! /*<>*/ is_dir_sep$1(dirname, l - 1 | 0)){ var _j_ = - /*<>*/ Stdlib[28].call(null, dir_sep, filename); - /*<>*/ return Stdlib[28].call(null, dirname, _j_); + /*<>*/ Stdlib[28].call(null, dir_sep, filename); + /*<>*/ return Stdlib[28].call(null, dirname, _j_); } - /*<>*/ return Stdlib[28].call(null, dirname, filename) /*<>*/ ; + /*<>*/ return Stdlib[28].call(null, dirname, filename) /*<>*/ ; } function chop_suffix(name, suff){ - /*<>*/ return check_suffix$1(name, suff) - ? /*<>*/ Stdlib_String - [16].call + /*<>*/ return check_suffix$1(name, suff) + ? /*<>*/ Stdlib_String + [19].call (null, name, 0, caml_ml_string_length(name) - caml_ml_string_length(suff) | 0) - : /*<>*/ Stdlib + : /*<>*/ Stdlib [1].call - (null, "Filename.chop_suffix") /*<>*/ ; + (null, "Filename.chop_suffix") /*<>*/ ; + } + function chop_suffix_opt(suffix, name){ + /*<>*/ return check_suffix$1(name, suffix) + ? [0, + /*<>*/ Stdlib_String[19].call + (null, + name, + 0, + /*<>*/ caml_ml_string_length(name) + - caml_ml_string_length(suffix) + | 0)] + : 0 /*<>*/ ; } function extension_len(name){ var - i$3 = /*<>*/ caml_ml_string_length(name) - 1 | 0, + i$3 = /*<>*/ caml_ml_string_length(name) - 1 | 0, i0 = i$3; for(;;){ - /*<>*/ if - (0 <= i0 && ! /*<>*/ is_dir_sep$1(name, i0)){ - /*<>*/ if(46 === caml_string_get(name, i0)) break; - var i$2 = /*<>*/ i0 - 1 | 0; + /*<>*/ if + (0 <= i0 && ! /*<>*/ is_dir_sep$1(name, i0)){ + /*<>*/ if(46 === caml_string_get(name, i0)) break; + var i$2 = /*<>*/ i0 - 1 | 0; i0 = i$2; continue; } - /*<>*/ return 0; + /*<>*/ return 0; } - var i$1 = /*<>*/ i0 - 1 | 0, i = i$1; + var i$1 = /*<>*/ i0 - 1 | 0, i = i$1; for(;;){ - /*<>*/ if - (0 <= i && ! /*<>*/ is_dir_sep$1(name, i)){ - /*<>*/ if(46 !== caml_string_get(name, i)) - /*<>*/ return caml_ml_string_length(name) - i0 | 0; - var i$0 = /*<>*/ i - 1 | 0; + /*<>*/ if + (0 <= i && ! /*<>*/ is_dir_sep$1(name, i)){ + /*<>*/ if(46 !== caml_string_get(name, i)) + /*<>*/ return caml_ml_string_length(name) - i0 | 0; + var i$0 = /*<>*/ i - 1 | 0; i = i$0; continue; } - /*<>*/ return 0; + /*<>*/ return 0; } - /*<>*/ } + /*<>*/ } function extension(name){ - var l = /*<>*/ extension_len(name); - /*<>*/ return 0 === l + var l = /*<>*/ extension_len(name); + /*<>*/ return 0 === l ? cst - : /*<>*/ Stdlib_String - [16].call - (null, name, caml_ml_string_length(name) - l | 0, l) /*<>*/ ; + : /*<>*/ Stdlib_String + [19].call + (null, name, caml_ml_string_length(name) - l | 0, l) /*<>*/ ; } function chop_extension(name){ - var l = /*<>*/ extension_len(name); - /*<>*/ return 0 === l - ? /*<>*/ Stdlib + var l = /*<>*/ extension_len(name); + /*<>*/ return 0 === l + ? /*<>*/ Stdlib [1].call (null, "Filename.chop_extension") - : /*<>*/ Stdlib_String - [16].call - (null, name, 0, caml_ml_string_length(name) - l | 0) /*<>*/ ; + : /*<>*/ Stdlib_String + [19].call + (null, name, 0, caml_ml_string_length(name) - l | 0) /*<>*/ ; } function remove_extension(name){ - var l = /*<>*/ extension_len(name); - /*<>*/ return 0 === l + var l = /*<>*/ extension_len(name); + /*<>*/ return 0 === l ? name - : /*<>*/ Stdlib_String - [16].call - (null, name, 0, caml_ml_string_length(name) - l | 0) /*<>*/ ; + : /*<>*/ Stdlib_String + [19].call + (null, name, 0, caml_ml_string_length(name) - l | 0) /*<>*/ ; } var prng_key = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], 0, Stdlib_Random[19][2]), + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], 0, Stdlib_Random[19][2]), _e_ = /*<>*/ [0, [2, 0, [4, 6, [0, 2, 6], 0, [2, 0, 0]]], "%s%06x%s"]; function temp_file_name(temp_dir, prefix, suffix){ var random_state = - /*<>*/ caml_call1(Stdlib_Domain[11][2], prng_key), + /*<>*/ caml_call1(Stdlib_Domain[12][2], prng_key), rnd = - /*<>*/ caml_call1 + /*<>*/ caml_call1 (Stdlib_Random[19][4], random_state) & 16777215; - /*<>*/ return /*<>*/ concat + /*<>*/ return /*<>*/ concat (temp_dir, - /*<>*/ caml_call3 - (Stdlib_Printf[4].call(null, _e_), prefix, rnd, suffix)) /*<>*/ ; + /*<>*/ caml_call3 + (Stdlib_Printf[4].call(null, _e_), prefix, rnd, suffix)) /*<>*/ ; } var current_temp_dir_name = - /*<>*/ caml_call2 - (Stdlib_Domain[11][1], - [0, function(_j_){ /*<>*/ return _j_;}], + /*<>*/ caml_call2 + (Stdlib_Domain[12][1], + [0, Stdlib_Fun[1]], function(param){ - /*<>*/ return temp_dir_name$1; - /*<>*/ }); + /*<>*/ return temp_dir_name$1; + /*<>*/ }); function set_temp_dir_name(s){ - /*<>*/ return caml_call2 - (Stdlib_Domain[11][3], current_temp_dir_name, s) /*<>*/ ; + /*<>*/ return caml_call2 + (Stdlib_Domain[12][3], current_temp_dir_name, s) /*<>*/ ; } function get_temp_dir_name(param){ - /*<>*/ return caml_call1 - (Stdlib_Domain[11][2], current_temp_dir_name) /*<>*/ ; + /*<>*/ return caml_call1 + (Stdlib_Domain[12][2], current_temp_dir_name) /*<>*/ ; } var _f_ = /*<>*/ [0, 1, [0, 3, [0, 5, 0]]]; function temp_file(opt, prefix, suffix){ var temp_dir = - /*<>*/ opt + /*<>*/ opt ? opt[1] - : /*<>*/ caml_call1 - (Stdlib_Domain[11][2], current_temp_dir_name), - counter = /*<>*/ 0; + : /*<>*/ caml_call1 + (Stdlib_Domain[12][2], current_temp_dir_name), + counter = /*<>*/ 0; for(;;){ var name = - /*<>*/ temp_file_name(temp_dir, prefix, suffix); - /*<>*/ try{ - /*<>*/ /*<>*/ runtime.caml_sys_close - ( /*<>*/ runtime.caml_sys_open(name, _f_, 384)); + /*<>*/ temp_file_name(temp_dir, prefix, suffix); + /*<>*/ try{ + /*<>*/ /*<>*/ runtime.caml_sys_close + ( /*<>*/ runtime.caml_sys_open(name, _f_, 384)); return name; } catch(e$0){ var e = /*<>*/ caml_wrap_exception(e$0); if(e[1] !== Stdlib[11]) throw caml_maybe_attach_backtrace(e, 0); - /*<>*/ if(20 <= counter) - /*<>*/ throw caml_maybe_attach_backtrace(e, 0); - var counter$0 = /*<>*/ counter + 1 | 0; + /*<>*/ if(20 <= counter) + /*<>*/ throw caml_maybe_attach_backtrace(e, 0); + var counter$0 = /*<>*/ counter + 1 | 0; counter = counter$0; } } - /*<>*/ } + /*<>*/ } var _g_ = /*<>*/ [0, 7, 0]; function open_temp_file(_j_, _i_, _h_, prefix, suffix){ var - mode = /*<>*/ _j_ ? _j_[1] : _g_, + mode = /*<>*/ _j_ ? _j_[1] : _g_, perms = _i_ ? _i_[1] : 384, temp_dir = _h_ ? _h_[1] - : /*<>*/ caml_call1 - (Stdlib_Domain[11][2], current_temp_dir_name), - counter = /*<>*/ 0; + : /*<>*/ caml_call1 + (Stdlib_Domain[12][2], current_temp_dir_name), + counter = /*<>*/ 0; for(;;){ var name = - /*<>*/ temp_file_name(temp_dir, prefix, suffix); - /*<>*/ try{ - /*<>*/ _h_ = + /*<>*/ temp_file_name(temp_dir, prefix, suffix); + /*<>*/ try{ + /*<>*/ _h_ = [0, name, Stdlib[62].call(null, [0, 1, [0, 3, [0, 5, mode]]], perms, name)]; @@ -36143,41 +37963,41 @@ catch(e$0){ var e = /*<>*/ caml_wrap_exception(e$0); if(e[1] !== Stdlib[11]) throw caml_maybe_attach_backtrace(e, 0); - /*<>*/ if(20 <= counter) - /*<>*/ throw caml_maybe_attach_backtrace(e, 0); - var counter$0 = /*<>*/ counter + 1 | 0; + /*<>*/ if(20 <= counter) + /*<>*/ throw caml_maybe_attach_backtrace(e, 0); + var counter$0 = /*<>*/ counter + 1 | 0; counter = counter$0; } } - /*<>*/ } + /*<>*/ } function temp_dir(_g_, opt, prefix, suffix){ var temp_dir = - /*<>*/ _g_ + /*<>*/ _g_ ? _g_[1] - : /*<>*/ caml_call1 - (Stdlib_Domain[11][2], current_temp_dir_name), - perms = /*<>*/ opt ? opt[1] : 448, - counter = /*<>*/ 0; + : /*<>*/ caml_call1 + (Stdlib_Domain[12][2], current_temp_dir_name), + perms = /*<>*/ opt ? opt[1] : 448, + counter = /*<>*/ 0; for(;;){ var name = - /*<>*/ temp_file_name(temp_dir, prefix, suffix); - /*<>*/ try{ - /*<>*/ runtime.caml_sys_mkdir(name, perms); + /*<>*/ temp_file_name(temp_dir, prefix, suffix); + /*<>*/ try{ + /*<>*/ runtime.caml_sys_mkdir(name, perms); return name; } catch(e$0){ var e = /*<>*/ caml_wrap_exception(e$0); if(e[1] !== Stdlib[11]) throw caml_maybe_attach_backtrace(e, 0); - /*<>*/ if(20 <= counter) - /*<>*/ throw caml_maybe_attach_backtrace(e, 0); - var counter$0 = /*<>*/ counter + 1 | 0; + /*<>*/ if(20 <= counter) + /*<>*/ throw caml_maybe_attach_backtrace(e, 0); + var counter$0 = /*<>*/ counter + 1 | 0; counter = counter$0; } } - /*<>*/ } - /*<>*/ runtime.caml_register_global + /*<>*/ } + /*<>*/ runtime.caml_register_global ([0, current_dir_name$2, parent_dir_name, @@ -36187,7 +38007,7 @@ is_implicit$1, check_suffix$1, chop_suffix, - chop_suffix_opt$1, + chop_suffix_opt, extension, remove_extension, chop_extension, @@ -36343,7 +38163,7 @@ //# unitInfo: Provides: Stdlib__ArrayLabels //# unitInfo: Requires: Stdlib__Array -//# shape: Stdlib__ArrayLabels:[F(2),F(3),F(3),F(2)*,F(1)*,F(3),F(1)*,F(4),F(5),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(1)*->F(1)*,F(1)*->F(1)*,F(1),[]] +//# shape: Stdlib__ArrayLabels:[F(2),F(3),F(3),F(2)*,F(1)*,F(3),F(1)*,F(4),F(5),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(4),F(2),F(2),F(1)*->F(1)*,F(1)*->F(1)*,F(1),[]] (function (globalThis){ "use strict"; @@ -36388,12 +38208,13 @@ combine = Stdlib_Array[36], sort = Stdlib_Array[37], stable_sort = Stdlib_Array[38], - fast_sort = Stdlib_Array[39], - shuffle = Stdlib_Array[40], - to_seq = Stdlib_Array[41], - to_seqi = Stdlib_Array[42], - of_seq = Stdlib_Array[43], - Floatarray = Stdlib_Array[44]; + stable_sort_sub = Stdlib_Array[39], + fast_sort = Stdlib_Array[40], + shuffle = Stdlib_Array[41], + to_seq = Stdlib_Array[42], + to_seqi = Stdlib_Array[43], + of_seq = Stdlib_Array[44], + Floatarray = Stdlib_Array[45]; runtime.caml_register_global ([0, init, @@ -36434,6 +38255,7 @@ combine, sort, stable_sort, + stable_sort_sub, fast_sort, shuffle, to_seq, @@ -36447,7 +38269,7 @@ //# unitInfo: Provides: Stdlib__ListLabels //# unitInfo: Requires: Stdlib__List -//# shape: Stdlib__ListLabels:[F(1),F(2),F(2),F(1)*,F(2)*,F(1)*,F(1),F(1),F(2),F(2),F(1),F(2),F(2),F(2),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(4),F(4),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(2),F(1)*->F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(3),F(1)*->F(1)*,F(1)] +//# shape: Stdlib__ListLabels:[F(1),F(2),F(2),F(1)*,F(2)*,F(1)*,F(1),F(1),F(2),F(2),F(1),F(2),F(2),F(2),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(4),F(4),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(2),F(1)*->F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(1)*->F(1)*,F(1)] (function (globalThis){ "use strict"; @@ -36478,52 +38300,54 @@ mapi = Stdlib_List[22], rev_map = Stdlib_List[23], filter_map = Stdlib_List[24], - concat_map = Stdlib_List[25], - fold_left_map = Stdlib_List[26], - fold_left = Stdlib_List[27], - fold_right = Stdlib_List[28], - iter2 = Stdlib_List[29], - map2 = Stdlib_List[30], - rev_map2 = Stdlib_List[31], - fold_left2 = Stdlib_List[32], - fold_right2 = Stdlib_List[33], - for_all = Stdlib_List[34], - exists = Stdlib_List[35], - for_all2 = Stdlib_List[36], - exists2 = Stdlib_List[37], - mem = Stdlib_List[38], - memq = Stdlib_List[39], - find = Stdlib_List[40], - find_opt = Stdlib_List[41], - find_index = Stdlib_List[42], - find_map = Stdlib_List[43], - find_mapi = Stdlib_List[44], - filter = Stdlib_List[45], - find_all = Stdlib_List[46], - filteri = Stdlib_List[47], - take = Stdlib_List[48], - drop = Stdlib_List[49], - take_while = Stdlib_List[50], - drop_while = Stdlib_List[51], - partition = Stdlib_List[52], - partition_map = Stdlib_List[53], - assoc = Stdlib_List[54], - assoc_opt = Stdlib_List[55], - assq = Stdlib_List[56], - assq_opt = Stdlib_List[57], - mem_assoc = Stdlib_List[58], - mem_assq = Stdlib_List[59], - remove_assoc = Stdlib_List[60], - remove_assq = Stdlib_List[61], - split = Stdlib_List[62], - combine = Stdlib_List[63], - sort = Stdlib_List[64], - stable_sort = Stdlib_List[65], - fast_sort = Stdlib_List[66], - sort_uniq = Stdlib_List[67], - merge = Stdlib_List[68], - to_seq = Stdlib_List[69], - of_seq = Stdlib_List[70]; + filter_mapi = Stdlib_List[25], + concat_map = Stdlib_List[26], + fold_left_map = Stdlib_List[27], + fold_left = Stdlib_List[28], + fold_right = Stdlib_List[29], + iter2 = Stdlib_List[30], + map2 = Stdlib_List[31], + rev_map2 = Stdlib_List[32], + fold_left2 = Stdlib_List[33], + fold_right2 = Stdlib_List[34], + for_all = Stdlib_List[35], + exists = Stdlib_List[36], + for_all2 = Stdlib_List[37], + exists2 = Stdlib_List[38], + mem = Stdlib_List[39], + memq = Stdlib_List[40], + find = Stdlib_List[41], + find_opt = Stdlib_List[42], + find_index = Stdlib_List[43], + find_map = Stdlib_List[44], + find_mapi = Stdlib_List[45], + filter = Stdlib_List[46], + find_all = Stdlib_List[47], + filteri = Stdlib_List[48], + take = Stdlib_List[49], + drop = Stdlib_List[50], + take_while = Stdlib_List[51], + drop_while = Stdlib_List[52], + partition = Stdlib_List[53], + partition_map = Stdlib_List[54], + assoc = Stdlib_List[55], + assoc_opt = Stdlib_List[56], + assq = Stdlib_List[57], + assq_opt = Stdlib_List[58], + mem_assoc = Stdlib_List[59], + mem_assq = Stdlib_List[60], + remove_assoc = Stdlib_List[61], + remove_assq = Stdlib_List[62], + split = Stdlib_List[63], + split_map = Stdlib_List[64], + combine = Stdlib_List[65], + sort = Stdlib_List[66], + stable_sort = Stdlib_List[67], + fast_sort = Stdlib_List[68], + sort_uniq = Stdlib_List[69], + merge = Stdlib_List[70], + to_seq = Stdlib_List[71], + of_seq = Stdlib_List[72]; runtime.caml_register_global ([0, length, @@ -36550,6 +38374,7 @@ mapi, rev_map, filter_map, + filter_mapi, concat_map, fold_left_map, fold_left, @@ -36588,6 +38413,7 @@ remove_assoc, remove_assq, split, + split_map, combine, sort, stable_sort, @@ -36793,7 +38619,7 @@ //# unitInfo: Provides: Stdlib__StringLabels //# unitInfo: Requires: Stdlib__String -//# shape: Stdlib__StringLabels:[F(2),F(2),N,F(1),F(1),F(5),F(2),F(2)*,F(2)*,F(2)*,F(2),F(2),F(3),F(3),F(2),F(3),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(2),F(3),F(3),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(1)*->F(1),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2)] +//# shape: Stdlib__StringLabels:[F(2),F(2),N,F(1),F(1),F(1),F(5),F(2),F(2)*,F(2)*,F(2)*,F(1)*,F(2),F(2),F(1)->F(1),F(3),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1)->F(1),F(1)->F(1),F(1)->F(2),F(1)->F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(2),F(2),F(1)->F(2),F(1)->F(2),F(1)->F(4),F(1)->F(4),F(1)->F(3),F(1)->F(3),F(1)->F(3),F(1)*->F(1),F(1)*->F(1),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2)] (function (globalThis){ "use strict"; @@ -36803,74 +38629,103 @@ make = Stdlib_String[1], init = Stdlib_String[2], empty = Stdlib_String[3], - of_bytes = Stdlib_String[4], - to_bytes = Stdlib_String[5], - blit = Stdlib_String[6], - concat = Stdlib_String[7], - cat = Stdlib_String[8], - equal = Stdlib_String[9], - compare = Stdlib_String[10], - starts_with = Stdlib_String[11], - ends_with = Stdlib_String[12], - contains_from = Stdlib_String[13], - rcontains_from = Stdlib_String[14], - contains = Stdlib_String[15], - sub = Stdlib_String[16], - split_on_char = Stdlib_String[17], - map = Stdlib_String[18], - mapi = Stdlib_String[19], - fold_left = Stdlib_String[20], - fold_right = Stdlib_String[21], - for_all = Stdlib_String[22], - exists = Stdlib_String[23], - trim = Stdlib_String[24], - escaped = Stdlib_String[25], - uppercase_ascii = Stdlib_String[26], - lowercase_ascii = Stdlib_String[27], - capitalize_ascii = Stdlib_String[28], - uncapitalize_ascii = Stdlib_String[29], - iter = Stdlib_String[30], - iteri = Stdlib_String[31], - index_from = Stdlib_String[32], - index_from_opt = Stdlib_String[33], - rindex_from = Stdlib_String[34], - rindex_from_opt = Stdlib_String[35], - index = Stdlib_String[36], - index_opt = Stdlib_String[37], - rindex = Stdlib_String[38], - rindex_opt = Stdlib_String[39], - to_seq = Stdlib_String[40], - to_seqi = Stdlib_String[41], - of_seq = Stdlib_String[42], - get_utf_8_uchar = Stdlib_String[43], - is_valid_utf_8 = Stdlib_String[44], - get_utf_16be_uchar = Stdlib_String[45], - is_valid_utf_16be = Stdlib_String[46], - get_utf_16le_uchar = Stdlib_String[47], - is_valid_utf_16le = Stdlib_String[48], - edit_distance = Stdlib_String[49], - spellcheck = Stdlib_String[50], - get_uint8 = Stdlib_String[51], - get_int8 = Stdlib_String[52], - get_uint16_ne = Stdlib_String[53], - get_uint16_be = Stdlib_String[54], - get_uint16_le = Stdlib_String[55], - get_int16_ne = Stdlib_String[56], - get_int16_be = Stdlib_String[57], - get_int16_le = Stdlib_String[58], - get_int32_ne = Stdlib_String[59], - hash = Stdlib_String[60], - seeded_hash = Stdlib_String[61], - get_int32_be = Stdlib_String[62], - get_int32_le = Stdlib_String[63], - get_int64_ne = Stdlib_String[64], - get_int64_be = Stdlib_String[65], - get_int64_le = Stdlib_String[66]; + of_char = Stdlib_String[4], + of_bytes = Stdlib_String[5], + to_bytes = Stdlib_String[6], + blit = Stdlib_String[7], + concat = Stdlib_String[8], + cat = Stdlib_String[9], + equal = Stdlib_String[10], + compare = Stdlib_String[11], + is_empty = Stdlib_String[12], + starts_with = Stdlib_String[13], + ends_with = Stdlib_String[14], + includes = Stdlib_String[15], + contains_from = Stdlib_String[16], + rcontains_from = Stdlib_String[17], + contains = Stdlib_String[18], + sub = Stdlib_String[19], + take_first = Stdlib_String[20], + take_last = Stdlib_String[21], + drop_first = Stdlib_String[22], + drop_last = Stdlib_String[23], + cut_first = Stdlib_String[24], + cut_last = Stdlib_String[25], + take_first_while = Stdlib_String[26], + take_last_while = Stdlib_String[27], + drop_first_while = Stdlib_String[28], + drop_last_while = Stdlib_String[29], + cut_first_while = Stdlib_String[30], + cut_last_while = Stdlib_String[31], + split_first = Stdlib_String[32], + split_last = Stdlib_String[33], + split_all = Stdlib_String[34], + rsplit_all = Stdlib_String[35], + split_on_char = Stdlib_String[36], + map = Stdlib_String[37], + mapi = Stdlib_String[38], + fold_left = Stdlib_String[39], + fold_right = Stdlib_String[40], + for_all = Stdlib_String[41], + exists = Stdlib_String[42], + trim = Stdlib_String[43], + escaped = Stdlib_String[44], + uppercase_ascii = Stdlib_String[45], + lowercase_ascii = Stdlib_String[46], + capitalize_ascii = Stdlib_String[47], + uncapitalize_ascii = Stdlib_String[48], + iter = Stdlib_String[49], + iteri = Stdlib_String[50], + find_first_index = Stdlib_String[51], + find_last_index = Stdlib_String[52], + index_from = Stdlib_String[53], + index_from_opt = Stdlib_String[54], + rindex_from = Stdlib_String[55], + rindex_from_opt = Stdlib_String[56], + index = Stdlib_String[57], + index_opt = Stdlib_String[58], + rindex = Stdlib_String[59], + rindex_opt = Stdlib_String[60], + find_first = Stdlib_String[61], + find_last = Stdlib_String[62], + find_all = Stdlib_String[63], + rfind_all = Stdlib_String[64], + replace_first = Stdlib_String[65], + replace_last = Stdlib_String[66], + replace_all = Stdlib_String[67], + to_seq = Stdlib_String[68], + to_seqi = Stdlib_String[69], + of_seq = Stdlib_String[70], + get_utf_8_uchar = Stdlib_String[71], + is_valid_utf_8 = Stdlib_String[72], + get_utf_16be_uchar = Stdlib_String[73], + is_valid_utf_16be = Stdlib_String[74], + get_utf_16le_uchar = Stdlib_String[75], + is_valid_utf_16le = Stdlib_String[76], + edit_distance = Stdlib_String[77], + spellcheck = Stdlib_String[78], + get_uint8 = Stdlib_String[79], + get_int8 = Stdlib_String[80], + get_uint16_ne = Stdlib_String[81], + get_uint16_be = Stdlib_String[82], + get_uint16_le = Stdlib_String[83], + get_int16_ne = Stdlib_String[84], + get_int16_be = Stdlib_String[85], + get_int16_le = Stdlib_String[86], + get_int32_ne = Stdlib_String[87], + hash = Stdlib_String[88], + seeded_hash = Stdlib_String[89], + get_int32_be = Stdlib_String[90], + get_int32_le = Stdlib_String[91], + get_int64_ne = Stdlib_String[92], + get_int64_be = Stdlib_String[93], + get_int64_le = Stdlib_String[94]; runtime.caml_register_global ([0, make, init, empty, + of_char, of_bytes, to_bytes, blit, @@ -36878,12 +38733,30 @@ cat, equal, compare, + is_empty, starts_with, ends_with, + includes, contains_from, rcontains_from, contains, sub, + take_first, + take_last, + drop_first, + drop_last, + cut_first, + cut_last, + take_first_while, + take_last_while, + drop_first_while, + drop_last_while, + cut_first_while, + cut_last_while, + split_first, + split_last, + split_all, + rsplit_all, split_on_char, map, mapi, @@ -36899,6 +38772,8 @@ uncapitalize_ascii, iter, iteri, + find_first_index, + find_last_index, index_from, index_from_opt, rindex_from, @@ -36907,6 +38782,13 @@ index_opt, rindex, rindex_opt, + find_first, + find_last, + find_all, + rfind_all, + replace_first, + replace_last, + replace_all, to_seq, to_seqi, of_seq, @@ -36941,7 +38823,7 @@ //# unitInfo: Provides: Stdlib__MoreLabels //# unitInfo: Requires: Stdlib__Hashtbl, Stdlib__Map, Stdlib__Set -//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*],[F(1)*],[F(1)*]] +//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*],[F(1)*],[F(1)*]] (function (globalThis){ "use strict"; diff --git a/compiler/tests-ocaml/basic-io/wc.expected b/compiler/tests-ocaml/basic-io/wc.expected index 3c812841cf..a7182b5c45 100644 --- a/compiler/tests-ocaml/basic-io/wc.expected +++ b/compiler/tests-ocaml/basic-io/wc.expected @@ -1 +1 @@ -1232 characters, 184 words, 58 lines +1347 characters, 202 words, 61 lines diff --git a/compiler/tests-ocaml/basic-io/wc.ml b/compiler/tests-ocaml/basic-io/wc.ml index 9e88d54c40..abc470318d 100644 --- a/compiler/tests-ocaml/basic-io/wc.ml +++ b/compiler/tests-ocaml/basic-io/wc.ml @@ -17,6 +17,9 @@ let count_channel in_channel = match c with '\n' -> incr lines; count Outside_word + | '\r' -> + (* Ignore \r to cater for CRLF vs LF checkouts *) + decr chars; count Outside_word | ' ' | '\t' -> count Outside_word | _ -> @@ -29,7 +32,7 @@ let count_channel in_channel = () let count_file name = - let ic = open_in name in + let ic = open_in_bin name in count_channel ic; close_in ic diff --git a/compiler/tests-ocaml/basic/dune b/compiler/tests-ocaml/basic/dune index b6494f3790..0b4b507c78 100644 --- a/compiler/tests-ocaml/basic/dune +++ b/compiler/tests-ocaml/basic/dune @@ -18,6 +18,7 @@ eval_order_6 eval_order_7 eval_order_8 + eval_order_9 eval_order_pr10283 float float_physical_equality diff --git a/compiler/tests-ocaml/basic/eval_order_9.expected b/compiler/tests-ocaml/basic/eval_order_9.expected new file mode 100644 index 0000000000..7326d96039 --- /dev/null +++ b/compiler/tests-ocaml/basic/eval_order_9.expected @@ -0,0 +1 @@ +Ok diff --git a/compiler/tests-ocaml/basic/eval_order_9.ml b/compiler/tests-ocaml/basic/eval_order_9.ml new file mode 100644 index 0000000000..75763c5083 --- /dev/null +++ b/compiler/tests-ocaml/basic/eval_order_9.ml @@ -0,0 +1,8 @@ +(* TEST *) + +(* From #12440, by Jeremy Yallop *) +let _ = + let r = ref true in + match Fun.id ((r := false), !r) with + | _, true -> print_endline "Ok" + | _, false -> print_endline "ERROR" diff --git a/compiler/tests-ocaml/lazy/dune b/compiler/tests-ocaml/lazy/dune index d34220cff1..af391eea11 100644 --- a/compiler/tests-ocaml/lazy/dune +++ b/compiler/tests-ocaml/lazy/dune @@ -9,7 +9,13 @@ ; lazy7 lazy8 ; minor_major_force - ) + lazy10) (build_if (>= %{ocaml_version} 5.0)) (modes js wasm)) + +(tests + (names lazy9) + (build_if + (>= %{ocaml_version} 5.5)) + (modes js wasm)) diff --git a/compiler/tests-ocaml/lazy/lazy10.expected b/compiler/tests-ocaml/lazy/lazy10.expected new file mode 100644 index 0000000000..541dab48de --- /dev/null +++ b/compiler/tests-ocaml/lazy/lazy10.expected @@ -0,0 +1,2 @@ +Ok +Ok diff --git a/compiler/tests-ocaml/lazy/lazy10.ml b/compiler/tests-ocaml/lazy/lazy10.ml new file mode 100644 index 0000000000..c30bad314f --- /dev/null +++ b/compiler/tests-ocaml/lazy/lazy10.ml @@ -0,0 +1,21 @@ +(* TEST *) + +(* This test checks that we're not propagating the approximation of + a lazy block down the path where it has been shortcut *) + +let[@inline never][@local never] run () = + let l = lazy (Sys.opaque_identity None) in + let check () = + match Lazy.force l with + | None -> print_endline "Ok" + | Some _ -> print_endline "Error" + in + (* First force the lazy value *) + check (); + (* Then trigger a minor GC to shortcut the evaluated lazy value *) + Gc.minor (); + (* Now check that the code above can cope with [l] being an immediate + instead of a pointer *) + check () + +let () = run () diff --git a/compiler/tests-ocaml/lazy/lazy9.expected b/compiler/tests-ocaml/lazy/lazy9.expected new file mode 100644 index 0000000000..e69de29bb2 diff --git a/compiler/tests-ocaml/lazy/lazy9.ml b/compiler/tests-ocaml/lazy/lazy9.ml new file mode 100644 index 0000000000..40b28b3b43 --- /dev/null +++ b/compiler/tests-ocaml/lazy/lazy9.ml @@ -0,0 +1,36 @@ +(* TEST *) + +(* In some situations, these code snippets would cause the + let-rec size computation to raise a fatal error. *) + +(* *) +type t = + | C of t Lazy.t Lazy.t + +let rec x = + let y = (lazy (C x)) in + lazy y + +(* *) +let todo () : float = + let rec l = + let x = lazy (Lazy.force (Lazy.force l)) in + lazy x + in + Lazy.force (Lazy.force l) + +(* *) +let () = + begin match Lazy.force (Lazy.force x) with + | C _ -> () + end; + begin match todo () with + | f -> + (* trying to get the actual value of the float will cause a segfault *) + let f' = f +. 1. in + print_float f'; + print_newline () + | exception CamlinternalLazy.Undefined -> + (* this is what should happen if `todo` is compiled correctly *) + () + end; diff --git a/compiler/tests-ocaml/lib-array/dune b/compiler/tests-ocaml/lib-array/dune index c281ad438c..4f8ba64c01 100644 --- a/compiler/tests-ocaml/lib-array/dune +++ b/compiler/tests-ocaml/lib-array/dune @@ -27,3 +27,33 @@ %{env:WASM_OF_OCAML=false})) (action (diff test_array.ml test_array_wasm.ml.corrected))) + +(rule + (target test_iarray.ml.corrected) + (action + (run node %{dep:../expect.bc.js} %{dep:test_iarray.ml}))) + +(rule + (alias runtest-js) + (enabled_if + (>= %{ocaml_version} 5.2)) + (action + (diff test_iarray.ml test_iarray.ml.corrected))) + +(rule + (copy test_iarray.ml test_iarray_wasm.ml)) + +(rule + (target test_iarray_wasm.ml.corrected) + (enabled_if %{env:WASM_OF_OCAML=false}) + (action + (run node %{dep:../expect_wasm.bc.wasm.js} %{dep:test_iarray_wasm.ml}))) + +(rule + (alias runtest-wasm) + (enabled_if + (and + (>= %{ocaml_version} 5.2) + %{env:WASM_OF_OCAML=false})) + (action + (diff test_iarray.ml test_iarray_wasm.ml.corrected))) diff --git a/compiler/tests-ocaml/lib-array/test_array.ml b/compiler/tests-ocaml/lib-array/test_array.ml index 09817baa6f..a4a5f3a301 100644 --- a/compiler/tests-ocaml/lib-array/test_array.ml +++ b/compiler/tests-ocaml/lib-array/test_array.ml @@ -20,12 +20,10 @@ a;; [|None; None; Some 42; Some 0; Some 42; None; None; None|] |}] let _ = Array.fill a 3 6 None;; -a;; [%%expect{| Exception: Invalid_argument "Array.fill". |}] let _ = Array.fill a (-1) 2 None;; -a;; [%%expect{| Exception: Invalid_argument "Array.fill". |}] @@ -195,3 +193,47 @@ let a = Array.init_matrix 2 3 (fun i j -> 10 * i + j);; [%%expect{| val a : int array array = [|[|0; 1; 2|]; [|10; 11; 12|]|] |}] + +let () = (* Array.equal *) + let test a b ~eq = + assert (Array.equal Int.equal a b = eq); + assert (Array.equal Int.equal b a = eq) + in + test [||] [||] ~eq:true; + test [||] [|1|] ~eq:false; + test [|1;2|] [|1;2|] ~eq:true; + test [|1;2|] [|1;2;3|] ~eq:false; + test [|1;2|] [|1;2;3|] ~eq:false; + () +[%%expect{| +|}] + +let () = (* Array.compare *) + let test a b ~cmp = + assert (Array.compare Int.compare a b = cmp); + assert (Array.compare Int.compare b a = -1 * cmp); + in + test [||] [||] ~cmp:0; + test [||] [|0;1|] ~cmp:~-1; + test [|0|] [||] ~cmp:1; + test [|0|] [|0;1|] ~cmp:~-1; + test [|0;1|] [|0;1|] ~cmp:0; + test [|0;1|] [|0;2|] ~cmp:~-1; + test [|0;1|] [|0;0|] ~cmp:1; + test [|0;1|] [|0;1|] ~cmp:0; + test [|1;0|] [|0;1|] ~cmp:1; + test [|0;1;2|] [|0;1;2|] ~cmp:0; + test [|0;2;2|] [|0;1;2|] ~cmp:1; + test [|0;1;2|] [|0;1|] ~cmp:1; + (* Check that the result of compare is normalized in -1,0,1 on large + array length differences. *) + test [|0;1;2;2;2|] [|0;1|] ~cmp:1; + test [|0;1|] [|0;1;2;2;2|] ~cmp:~-1; + (* If the length is different it is sufficient to order arrays and + we do not compare elements. This tests that so that + a possible behaviour change in the future can be detected *) + assert (Array.compare (fun _ _ -> assert false) [|0;1|] [|0;1;2|] = -1); + assert (Array.compare (fun _ _ -> assert false) [|0;1;2|] [|0;1|] = 1); + () +[%%expect{| +|}] diff --git a/compiler/tests-ocaml/lib-array/test_iarray.ml b/compiler/tests-ocaml/lib-array/test_iarray.ml new file mode 100644 index 0000000000..b8578722a6 --- /dev/null +++ b/compiler/tests-ocaml/lib-array/test_iarray.ml @@ -0,0 +1,445 @@ +(* TEST + expect; +*) + +(** Create some immutable and mutable arrays *) + +let iarray : int iarray = [|1;2;3;4;5|];; +let ifarray : float iarray = [|1.5;2.5;3.5;4.5;5.5|];; + +let marray : int array = [|1;2;3;4;5|];; +let mfarray : float array = [|1.5;2.5;3.5;4.5;5.5|];; + +[%%expect{| +val iarray : int iarray = [|1; 2; 3; 4; 5|] +val ifarray : float iarray = [|1.5; 2.5; 3.5; 4.5; 5.5|] +val marray : int array = [|1; 2; 3; 4; 5|] +val mfarray : float array = [|1.5; 2.5; 3.5; 4.5; 5.5|] +|}];; + +(** Confirm that immutable and mutable arrays have the same representation, even + when they're different objects *) + +Obj.repr iarray = Obj.repr marray;; +[%%expect{| +- : bool = true +|}];; + +Obj.repr ifarray = Obj.repr mfarray;; +[%%expect{| +- : bool = true +|}];; + +iarray == Obj.magic marray;; +[%%expect{| +- : bool = false +|}];; + +ifarray == Obj.magic mfarray;; +[%%expect{| +- : bool = false +|}];; + +(** Confirm that immutable and mutable arrays don't collide *) + +Obj.repr iarray <> Obj.repr ifarray;; +[%%expect{| +- : bool = true +|}];; + +Obj.repr marray <> Obj.repr mfarray;; +[%%expect{| +- : bool = true +|}];; + +(** Test basic functionality: One or a few tests for every function in [Iarray]. + We test both success and error cases, and in general try to have coverage of + edge cases. Comments are attached everywhere something subtle is being + checked. *) + +Iarray.length iarray, Iarray.length ifarray;; +[%%expect{| +- : int * int = (5, 5) +|}];; + +Iarray.get iarray 0, Iarray.get iarray 1, Iarray.get ifarray 2, +Iarray.get ifarray 3;; +[%%expect{| +- : int * int * float * float = (1, 2, 3.5, 4.5) +|}];; + +Iarray.get iarray 10 +[%%expect{| +Exception: Invalid_argument "index out of bounds". +|}];; + +Iarray.get iarray (-1);; +[%%expect{| +Exception: Invalid_argument "index out of bounds". +|}];; + +Iarray.get ifarray (-10);; +[%%expect{| +Exception: Invalid_argument "index out of bounds". +|}];; + +Iarray.get ifarray 5;; +[%%expect{| +Exception: Invalid_argument "index out of bounds". +|}];; + +Iarray.init 10 (fun x -> x * 2);; +[%%expect{| +- : int iarray = [|0; 2; 4; 6; 8; 10; 12; 14; 16; 18|] +|}];; + +Iarray.append iarray iarray;; +[%%expect{| +- : int iarray = [|1; 2; 3; 4; 5; 1; 2; 3; 4; 5|] +|}];; + +Iarray.concat [];; +[%%expect{| +- : 'a iarray = [||] +|}];; + +Iarray.concat [ Iarray.init 1 (fun x -> 1 + x) + ; Iarray.init 2 (fun x -> 20 + x) + ; Iarray.init 3 (fun x -> 300 + x) ];; +[%%expect{| +- : int iarray = [|1; 20; 21; 300; 301; 302|] +|}];; + +Iarray.sub iarray ~pos:0 ~len:2, Iarray.sub iarray ~pos:2 ~len:3;; +[%%expect{| +- : int iarray * int iarray = ([|1; 2|], [|3; 4; 5|]) +|}];; + +Iarray.sub iarray ~pos:(-1) ~len:3;; +[%%expect{| +Exception: Invalid_argument "Iarray.sub". +|}];; + +Iarray.sub iarray ~pos:1 ~len:(-3);; +[%%expect{| +Exception: Invalid_argument "Iarray.sub". +|}];; + +Iarray.sub iarray ~pos:3 ~len:10;; +[%%expect{| +Exception: Invalid_argument "Iarray.sub". +|}];; + +Iarray.to_list iarray;; +[%%expect{| +- : int list = [1; 2; 3; 4; 5] +|}];; + +Iarray.of_list [10;20;30];; +[%%expect{| +- : int iarray = [|10; 20; 30|] +|}];; + + +Iarray.to_array iarray;; +[%%expect{| +- : int array = [|1; 2; 3; 4; 5|] +|}];; + +Iarray.of_array mfarray;; +[%%expect{| +- : float iarray = [|1.5; 2.5; 3.5; 4.5; 5.5|] +|}];; + +(* [Iarray.to_array] creates a fresh mutable array every time *) +Iarray.to_array iarray == marray;; +[%%expect{| +- : bool = false +|}];; + +(* [Iarray.to_array] creates a fresh mutable array every time *) +Iarray.to_array ifarray == Iarray.to_array ifarray;; +[%%expect{| +- : bool = false +|}];; + +(* Round-tripping from and to an [iarray] creates a fresh copy every time *) +Iarray.of_array (Iarray.to_array iarray) == iarray;; +[%%expect{| +- : bool = false +|}];; + +let sum = ref 0. in +Iarray.iter (fun x -> sum := !sum +. x) ifarray; +!sum;; +[%%expect{| +- : float = 17.5 +|}];; + +let total = ref 0 in +Iarray.iteri (fun i x -> total := !total + i*x) iarray; +!total;; +[%%expect{| +- : int = 40 +|}];; + +Iarray.map Int.neg iarray;; +[%%expect{| +- : int iarray = [|-1; -2; -3; -4; -5|] +|}];; + +Iarray.mapi (fun i x -> i, 10.*.x) ifarray;; +[%%expect{| +- : (int * float) iarray = +[|(0, 15.); (1, 25.); (2, 35.); (3, 45.); (4, 55.)|] +|}];; + +Iarray.fold_left (fun acc x -> -x :: acc) [] iarray;; +[%%expect{| +- : int list = [-5; -4; -3; -2; -1] +|}];; + +Iarray.fold_left_map (fun acc x -> acc + x, string_of_int x) 0 iarray;; +[%%expect{| +- : int * string iarray = (15, [|"1"; "2"; "3"; "4"; "5"|]) +|}];; + +(* Confirm the function isn't called on the empty immutable array *) +Iarray.fold_left_map (fun _ _ -> assert false) 0 [||];; +[%%expect{| +- : int * 'a iarray = (0, [||]) +|}];; + +Iarray.fold_right (fun x acc -> -.x :: acc) ifarray [];; +[%%expect{| +- : float list = [-1.5; -2.5; -3.5; -4.5; -5.5] +|}];; + +let ints = ref 0 in +let floats = ref 0. in +Iarray.iter2 + (fun i f -> + ints := i + !ints; + floats := f +. !floats) + iarray + ifarray; +!ints, !floats;; +[%%expect{| +- : int * float = (15, 17.5) +|}];; + +Iarray.map2 (fun i f -> f, i) iarray ifarray;; +[%%expect{| +- : (float * int) iarray = +[|(1.5, 1); (2.5, 2); (3.5, 3); (4.5, 4); (5.5, 5)|] +|}];; + +Iarray.for_all (fun i -> i > 0) iarray;; +[%%expect{| +- : bool = true +|}];; + +Iarray.for_all (fun f -> f < 5.) ifarray;; +[%%expect{| +- : bool = false +|}];; + +Iarray.exists (fun f -> f < 5.) ifarray;; +[%%expect{| +- : bool = true +|}];; + +Iarray.exists (fun i -> i > 10) iarray;; +[%%expect{| +- : bool = false +|}];; + +Iarray.for_all2 (fun i f -> Float.of_int i < f) iarray ifarray;; +[%%expect{| +- : bool = true +|}];; + +Iarray.for_all2 (fun f i -> i = 1 && f = 1.5) ifarray iarray;; +[%%expect{| +- : bool = false +|}];; + +Iarray.exists2 (fun f i -> Float.of_int i +. f = 8.5) ifarray iarray;; +[%%expect{| +- : bool = true +|}];; + +Iarray.exists2 (fun i f -> Float.of_int i > f) iarray ifarray;; +[%%expect{| +- : bool = false +|}];; + +Iarray.mem 3 iarray, Iarray.mem 3.5 ifarray;; +[%%expect{| +- : bool * bool = (true, true) +|}];; + +Iarray.mem 30 iarray, Iarray.mem 35. ifarray;; +[%%expect{| +- : bool * bool = (false, false) +|}];; + +let x = ref 0 in +Iarray.memq x (Iarray.init 3 (Fun.const x));; +[%%expect{| +- : bool = true +|}];; + +Iarray.memq (ref 0) (Iarray.init 3 (Fun.const (ref 0))) +[%%expect{| +- : bool = false +|}];; + +Iarray.find_opt (fun x -> x*x > 5) iarray, +Iarray.find_opt (fun x -> x*.x > 5.) ifarray;; +[%%expect{| +- : int option * float option = (Some 3, Some 2.5) +|}];; + +Iarray.find_opt (fun x -> x*x > 50) iarray, +Iarray.find_opt (fun x -> x*.x > 50.) ifarray;; +[%%expect{| +- : int option * float option = (None, None) +|}];; + +Iarray.find_map (fun x -> if x mod 2 = 0 + then Some (x / 2) + else None) + iarray, +Iarray.find_map (fun x -> if Float.rem x 2. = 0.5 + then Some ((x -. 0.5) /. 2.) + else None) + ifarray;; +[%%expect{| +- : int option * float option = (Some 1, Some 1.) +|}];; + +Iarray.find_map (fun x -> if x mod 7 = 0 + then Some (x / 7) + else None) + iarray, +Iarray.find_map (fun x -> if Float.rem x 7. = 0.5 + then Some ((x -. 0.5) /. 7.) + else None) + ifarray;; +[%%expect{| +- : int option * float option = (None, None) +|}];; + +Iarray.split [| 1, "a"; 2, "b"; 3, "c" |];; +[%%expect{| +- : int iarray * string iarray = ([|1; 2; 3|], [|"a"; "b"; "c"|]) +|}];; + +Iarray.split [||];; +[%%expect{| +- : 'a iarray * 'b iarray = ([||], [||]) +|}];; + +Iarray.combine iarray ifarray;; +[%%expect{| +- : (int * float) iarray = +[|(1, 1.5); (2, 2.5); (3, 3.5); (4, 4.5); (5, 5.5)|] +|}];; + +Iarray.combine [||] [||];; +[%%expect{| +- : ('a * 'b) iarray = [||] +|}];; + +Iarray.combine iarray [| "wrong length" |];; +[%%expect{| +Exception: Invalid_argument "Iarray.combine". +|}];; + +Iarray.sort (Fun.flip Int.compare) iarray, +Iarray.sort (Fun.flip Float.compare) ifarray;; +[%%expect{| +- : int iarray * Float.t iarray = +([|5; 4; 3; 2; 1|], [|5.5; 4.5; 3.5; 2.5; 1.5|]) +|}];; + +Iarray.stable_sort (Fun.flip Int.compare) iarray, +Iarray.stable_sort (Fun.flip Float.compare) ifarray;; +[%%expect{| +- : int iarray * Float.t iarray = +([|5; 4; 3; 2; 1|], [|5.5; 4.5; 3.5; 2.5; 1.5|]) +|}];; + +(* Check stability *) +Iarray.stable_sort + (fun s1 s2 -> Int.compare (String.length s1) (String.length s2)) + [| "zero"; "one"; "two"; "three"; "four"; + "five"; "six"; "seven"; "eight"; "nine"; + "ten" |];; +[%%expect{| +- : string iarray = +[|"one"; "two"; "six"; "ten"; "zero"; "four"; "five"; "nine"; "three"; + "seven"; "eight"|] +|}];; + +Iarray.fast_sort (Fun.flip Int.compare) iarray, +Iarray.fast_sort (Fun.flip Float.compare) ifarray;; +[%%expect{| +- : int iarray * Float.t iarray = +([|5; 4; 3; 2; 1|], [|5.5; 4.5; 3.5; 2.5; 1.5|]) +|}];; + +Iarray.to_seq iarray |> List.of_seq;; +[%%expect{| +- : int list = [1; 2; 3; 4; 5] +|}];; + +Iarray.to_seqi ifarray |> List.of_seq;; +[%%expect{| +- : (int * float) list = [(0, 1.5); (1, 2.5); (2, 3.5); (3, 4.5); (4, 5.5)] +|}];; + +["hello"; "world"] |> List.to_seq |> Iarray.of_seq;; +[%%expect{| +- : string iarray = [|"hello"; "world"|] +|}];; + +(** Confirm that we haven't edited the immutable arrays, and that editing + mutable siblings or copies does nothing *) + +Array.fill marray 0 3 0; +marray;; +[%%expect{| +- : int array = [|0; 0; 0; 4; 5|] +|}];; + +Array.fill (Iarray.to_array iarray) 3 2 10; +iarray;; +[%%expect{| +- : int iarray = [|1; 2; 3; 4; 5|] +|}];; + +Array.fill mfarray 3 2 0.; +mfarray;; +[%%expect{| +- : float array = [|1.5; 2.5; 3.5; 0.; 0.|] +|}];; + +Array.fill (Iarray.to_array ifarray) 0 3 10.; +ifarray;; +[%%expect{| +- : float iarray = [|1.5; 2.5; 3.5; 4.5; 5.5|] +|}];; + +(* Confirm that nothing has changed *) + +iarray;; +[%%expect{| +- : int iarray = [|1; 2; 3; 4; 5|] +|}];; + +ifarray;; +[%%expect{| +- : float iarray = [|1.5; 2.5; 3.5; 4.5; 5.5|] +|}];; diff --git a/compiler/tests-ocaml/lib-bool/dune b/compiler/tests-ocaml/lib-bool/dune index a53598eb62..7c31dd5e56 100644 --- a/compiler/tests-ocaml/lib-bool/dune +++ b/compiler/tests-ocaml/lib-bool/dune @@ -1,6 +1,6 @@ (tests (names test) (build_if - (>= %{ocaml_version} 5.3)) + (>= %{ocaml_version} 5.5)) (libraries) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-bool/test.ml b/compiler/tests-ocaml/lib-bool/test.ml index 6a3c92bd16..c3ef08ed83 100644 --- a/compiler/tests-ocaml/lib-bool/test.ml +++ b/compiler/tests-ocaml/lib-bool/test.ml @@ -17,6 +17,18 @@ let test_and () = assert (!wit = 2); wit := 0; () +let test_eager_and () = + let wit = ref 0 in + assert (Bool.logand (incr wit; false) (incr wit; false) = false); + assert (!wit = 2); wit := 0; + assert (Bool.logand (incr wit; false) (incr wit; true) = false); + assert (!wit = 2); wit := 0; + assert (Bool.logand (incr wit; true) (incr wit; false) = false); + assert (!wit = 2); wit := 0; + assert (Bool.logand (incr wit; true) (incr wit; true) = true); + assert (!wit = 2); wit := 0; + () + let test_or () = let wit = ref 0 in assert (Bool.( || ) (incr wit; false) (incr wit; false) = false); @@ -29,6 +41,30 @@ let test_or () = assert (!wit = 1); wit := 0; () +let test_eager_or () = + let wit = ref 0 in + assert (Bool.logor (incr wit; false) (incr wit; false) = false); + assert (!wit = 2); wit := 0; + assert (Bool.logor (incr wit; false) (incr wit; true) = true); + assert (!wit = 2); wit := 0; + assert (Bool.logor (incr wit; true) (incr wit; false) = true); + assert (!wit = 2); wit := 0; + assert (Bool.logor (incr wit; true) (incr wit; true) = true); + assert (!wit = 2); wit := 0; + () + +let test_eager_xor () = + let wit = ref 0 in + assert (Bool.logxor (incr wit; false) (incr wit; false) = false); + assert (!wit = 2); wit := 0; + assert (Bool.logxor (incr wit; false) (incr wit; true) = true); + assert (!wit = 2); wit := 0; + assert (Bool.logxor (incr wit; true) (incr wit; false) = true); + assert (!wit = 2); wit := 0; + assert (Bool.logxor (incr wit; true) (incr wit; true) = false); + assert (!wit = 2); wit := 0; + () + let test_equal () = assert (Bool.equal false false = true); assert (Bool.equal false true = false); @@ -79,7 +115,10 @@ let test_hash () = let tests () = test_not (); test_and (); + test_eager_and (); test_or (); + test_eager_or (); + test_eager_xor (); test_equal (); test_compare (); test_to_int (); diff --git a/compiler/tests-ocaml/lib-char/dune b/compiler/tests-ocaml/lib-char/dune new file mode 100644 index 0000000000..7c31dd5e56 --- /dev/null +++ b/compiler/tests-ocaml/lib-char/dune @@ -0,0 +1,6 @@ +(tests + (names test) + (build_if + (>= %{ocaml_version} 5.5)) + (libraries) + (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-char/test.expected b/compiler/tests-ocaml/lib-char/test.expected new file mode 100644 index 0000000000..d86bac9de5 --- /dev/null +++ b/compiler/tests-ocaml/lib-char/test.expected @@ -0,0 +1 @@ +OK diff --git a/compiler/tests-ocaml/lib-char/test.ml b/compiler/tests-ocaml/lib-char/test.ml new file mode 100644 index 0000000000..3f87c1c5a9 --- /dev/null +++ b/compiler/tests-ocaml/lib-char/test.ml @@ -0,0 +1,132 @@ +(* TEST *) + +let assert_raise_invalid_argument f v = + assert (try ignore (f v); false with Invalid_argument _ -> true) + +let test_constants () = + assert (Char.equal Char.Ascii.min '\x00'); + assert (Char.equal Char.Ascii.max '\x7F'); + () + +let test_is_valid () = + assert (not (Char.Ascii.is_valid '\x80')); + assert (Char.Ascii.is_valid '\x00'); + assert (Char.Ascii.is_valid '\x7F'); + assert (Char.Ascii.is_valid 'a'); + () + +let test_preds () = + assert (Char.Ascii.is_upper 'A'); + assert (not (Char.Ascii.is_upper 'z')); + assert (Char.Ascii.is_lower 'z'); + assert (not (Char.Ascii.is_lower 'A')); + assert (Char.Ascii.is_letter 'A'); + assert (Char.Ascii.is_letter 'z'); + assert (not (Char.Ascii.is_letter '1')); + assert (Char.Ascii.is_alphanum 'A'); + assert (Char.Ascii.is_alphanum 'z'); + assert (Char.Ascii.is_alphanum '1'); + assert (not (Char.Ascii.is_alphanum '.')); + assert (Char.Ascii.is_white ' '); + assert (not (Char.Ascii.is_white 'a')); + assert (Char.Ascii.is_blank ' '); + assert (not (Char.Ascii.is_blank '\n')); + assert (Char.Ascii.is_graphic 'a'); + assert (Char.Ascii.is_graphic '.'); + assert (not (Char.Ascii.is_graphic ' ')); + assert (Char.Ascii.is_print 'a'); + assert (Char.Ascii.is_print '.'); + assert (Char.Ascii.is_print ' '); + assert (not (Char.Ascii.is_print '\n')); + assert (Char.Ascii.is_control '\n'); + assert (Char.Ascii.is_control '\x7F'); + assert (not (Char.Ascii.is_control ' ')); + () + +let test_decimal () = + assert (Char.Ascii.is_digit '0'); + assert (not (Char.Ascii.is_digit 'A')); + assert (Char.Ascii.digit_to_int '5' = 5); + assert (Char.Ascii.digit_to_int '9' = 9); + assert_raise_invalid_argument Char.Ascii.digit_to_int 'A'; + assert (Char.Ascii.digit_of_int 5 = '5'); + assert (Char.Ascii.digit_of_int (-5) = '5'); + assert (Char.Ascii.digit_of_int 9 = '9'); + assert (Char.Ascii.digit_of_int (-9) = '9'); + assert (Char.Ascii.digit_of_int 10 = '0'); + assert (Char.Ascii.digit_of_int (-10) = '0'); + assert (Char.Ascii.digit_of_int 112 = '2'); + assert (Char.Ascii.digit_of_int (-112) = '2'); + () + +let test_hexadecimal () = + assert (Char.Ascii.is_hex_digit '0'); + assert (Char.Ascii.is_hex_digit 'A'); + assert (Char.Ascii.is_hex_digit 'a'); + assert (Char.Ascii.is_hex_digit 'F'); + assert (Char.Ascii.is_hex_digit 'f'); + assert (not (Char.Ascii.is_hex_digit 'G')); + assert (not (Char.Ascii.is_hex_digit 'g')); + assert (Char.Ascii.hex_digit_to_int '5' = 5); + assert (Char.Ascii.hex_digit_to_int 'f' = 0xF); + assert (Char.Ascii.hex_digit_to_int 'F' = 0xF); + assert (Char.Ascii.hex_digit_to_int 'a' = 0xA); + assert (Char.Ascii.hex_digit_to_int 'A' = 0xA); + assert (Char.Ascii.hex_digit_to_int 'd' = 0xD); + assert_raise_invalid_argument Char.Ascii.hex_digit_to_int 'g'; + assert_raise_invalid_argument Char.Ascii.hex_digit_to_int 'G'; + assert_raise_invalid_argument Char.Ascii.hex_digit_to_int 'z'; + assert (Char.Ascii.lower_hex_digit_of_int 5 = '5'); + assert (Char.Ascii.lower_hex_digit_of_int (-5) = '5'); + assert (Char.Ascii.lower_hex_digit_of_int 10 = 'a'); + assert (Char.Ascii.lower_hex_digit_of_int (-10) = 'a'); + assert (Char.Ascii.lower_hex_digit_of_int 15 = 'f'); + assert (Char.Ascii.lower_hex_digit_of_int (-15) = 'f'); + assert (Char.Ascii.lower_hex_digit_of_int 16 = '0'); + assert (Char.Ascii.lower_hex_digit_of_int (-16) = '0'); + assert (Char.Ascii.lower_hex_digit_of_int (255) = 'f'); + assert (Char.Ascii.lower_hex_digit_of_int (-255) = 'f'); + assert (Char.Ascii.lower_hex_digit_of_int 0x77 = '7'); + assert (Char.Ascii.lower_hex_digit_of_int 0x7A = 'a'); + assert (Char.Ascii.lower_hex_digit_of_int 0xB = 'b'); + assert (Char.Ascii.lower_hex_digit_of_int 0x2 = '2'); + assert (Char.Ascii.upper_hex_digit_of_int 5 = '5'); + assert (Char.Ascii.upper_hex_digit_of_int (-5) = '5'); + assert (Char.Ascii.upper_hex_digit_of_int 10 = 'A'); + assert (Char.Ascii.upper_hex_digit_of_int (-10) = 'A'); + assert (Char.Ascii.upper_hex_digit_of_int 15 = 'F'); + assert (Char.Ascii.upper_hex_digit_of_int (-15) = 'F'); + assert (Char.Ascii.upper_hex_digit_of_int 16 = '0'); + assert (Char.Ascii.upper_hex_digit_of_int (-16) = '0'); + assert (Char.Ascii.upper_hex_digit_of_int (255) = 'F'); + assert (Char.Ascii.upper_hex_digit_of_int (-255) = 'F'); + assert (Char.Ascii.upper_hex_digit_of_int 0x77 = '7'); + assert (Char.Ascii.upper_hex_digit_of_int 0x7A = 'A'); + assert (Char.Ascii.upper_hex_digit_of_int 0xB = 'B'); + assert (Char.Ascii.upper_hex_digit_of_int 0x2 = '2'); + () + +let test_case_mappings () = + assert (Char.Ascii.uppercase 'a' = 'A'); + assert (Char.Ascii.uppercase 'g' = 'G'); + assert (Char.Ascii.uppercase 'Z' = 'Z'); + assert (Char.Ascii.uppercase '\n' = '\n'); + assert (Char.Ascii.lowercase 'A' = 'a'); + assert (Char.Ascii.lowercase 'G' = 'g'); + assert (Char.Ascii.lowercase 'z' = 'z'); + assert (Char.Ascii.lowercase '\n' = '\n'); + () + + +let tests () = + test_constants (); + test_is_valid (); + test_preds (); + test_decimal (); + test_hexadecimal (); + test_case_mappings(); + () + +let () = + tests (); + print_endline "OK" diff --git a/compiler/tests-ocaml/lib-dynarray/dune b/compiler/tests-ocaml/lib-dynarray/dune index d5bbec1ddf..3a93fb3994 100644 --- a/compiler/tests-ocaml/lib-dynarray/dune +++ b/compiler/tests-ocaml/lib-dynarray/dune @@ -1,6 +1,6 @@ (tests (build_if - (>= %{ocaml_version} 5.3)) + (>= %{ocaml_version} 5.5)) (names test heap_sort) (libraries) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-dynarray/test.ml b/compiler/tests-ocaml/lib-dynarray/test.ml index a0621158b0..46c584f0f2 100644 --- a/compiler/tests-ocaml/lib-dynarray/test.ml +++ b/compiler/tests-ocaml/lib-dynarray/test.ml @@ -87,6 +87,36 @@ let () = let a = A.of_list [1; 2; 3] in assert (A.fold_right List.cons a [] = [1; 2; 3]);; +(* exists2 *) +let () = + let a = A.of_list [1; 2; 3] in + assert (A.exists2 (=) a a); + assert (not (A.exists2 (=) (A.of_list []) (A.of_list []))); + assert (A.exists2 (=) a (A.of_list [1; 4; 3])); + assert (match A.exists2 (=) a (A.of_list [1; 2]) with + | exception (Invalid_argument _) -> true + | _ -> false + ); + assert (match A.exists2 (=) (A.of_list [1; 2]) a with + | exception (Invalid_argument _) -> true + | _ -> false + );; + +(* for_all2 *) +let () = + let a = A.of_list [1; 2; 3] in + assert (A.for_all2 (=) a a); + assert (A.for_all2 (=) (A.of_list []) (A.of_list [])); + assert (not (A.for_all2 (=) a (A.of_list [1; 4; 3]))); + assert (match A.for_all2 (=) a (A.of_list [1; 2]) with + | exception (Invalid_argument _) -> true + | _ -> false + ); + assert (match A.for_all2 (=) (A.of_list [1; 2]) a with + | exception (Invalid_argument _) -> true + | _ -> false + );; + (** {1:adding Adding elements} *) (** add_last was tested above *) @@ -246,6 +276,20 @@ let () = (** {1:iteration Iteration} *) +(** iter, rev_iter *) + +let () = + let a = A.of_list [1; 2; 3] in + let seen = ref [] in + A.iter (fun i -> seen := i :: !seen) a; + assert (!seen = [3; 2; 1]) + +let () = + let a = A.of_list [1; 2; 3] in + let seen = ref [] in + A.rev_iter (fun i -> seen := i :: !seen) a; + assert (!seen = [1; 2; 3]) + (** map *) let () = @@ -499,6 +543,51 @@ let () = assert (A.length a = 201); assert (A.length a = A.capacity a);; +(** unsafe_to_iarray *) + +let () = + let n = 42 in + (* With unchanged capacity *) + let a = A.unsafe_to_iarray ~capacity:n (fun t -> + for i = 0 to n - 1 do + A.add_last t i + done) + in + for i = 0 to n - 1 do + assert (Iarray.get a i = i) + done; + (* With a change in capacity *) + let a = A.unsafe_to_iarray ~capacity:n (fun t -> + for i = 0 to n + 5 do + A.add_last t i + done) + in + for i = 0 to n + 5 do + assert (Iarray.get a i = i) + done; + let a = A.unsafe_to_iarray ~capacity:n (fun t -> + for i = 0 to n / 2 do + A.add_last t i + done; + A.fit_capacity t) + in + for i = 0 to n / 2 do + assert (Iarray.get a i = i) + done;; + +(** unsafe_to_iarray with float *) + +let () = + let n = 42 in + let a = A.unsafe_to_iarray ~capacity:n (fun t -> + for i = 0 to n - 1 do + A.add_last t (Float.of_int i) + done) + in + for i = 0 to n - 1 do + assert (Float.equal (Iarray.get a i) (Float.of_int i)) + done;; + (** check that comparisons and marshalling-with-sharing work as expected. *) diff --git a/compiler/tests-ocaml/lib-either/dune b/compiler/tests-ocaml/lib-either/dune index febf0dccb0..6f99084a08 100644 --- a/compiler/tests-ocaml/lib-either/dune +++ b/compiler/tests-ocaml/lib-either/dune @@ -1,10 +1,14 @@ (rule (target test.ml.corrected) + (enabled_if + (>= %{ocaml_version} 5.5)) (action (run node %{dep:../expect.bc.js} %{dep:test.ml}))) (rule (alias runtest-js) + (enabled_if + (>= %{ocaml_version} 5.5)) (action (diff test.ml test.ml.corrected))) diff --git a/compiler/tests-ocaml/lib-either/test.ml b/compiler/tests-ocaml/lib-either/test.ml index 5cdaa3837d..e9e571de22 100644 --- a/compiler/tests-ocaml/lib-either/test.ml +++ b/compiler/tests-ocaml/lib-either/test.ml @@ -19,6 +19,21 @@ List.map is_right [left 1; right true];; - : bool list = [false; true] |}];; +[get_left (Left 1); get_right (Right 2)];; +[%%expect {| +- : int list = [1; 2] +|}];; + +ignore (get_left (Right 1));; +[%%expect {| +Exception: Invalid_argument "Either.t is Right _". +|}];; + +ignore (get_right (Left 1));; +[%%expect {| +Exception: Invalid_argument "Either.t is Left _". +|}];; + [find_left (Left 1); find_left (Right 1)];; [%%expect {| - : int option list = [Some 1; None] diff --git a/compiler/tests-ocaml/lib-floatarray/floatarray.ml b/compiler/tests-ocaml/lib-floatarray/floatarray.ml index 654e15b646..ff0cc4943a 100644 --- a/compiler/tests-ocaml/lib-floatarray/floatarray.ml +++ b/compiler/tests-ocaml/lib-floatarray/floatarray.ml @@ -186,6 +186,8 @@ module Test (A : S) : sig end = struct (* check_inval omitted *) (* [concat] *) + assert (A.of_list [1.; 2.; 3.] + = A.concat [A.of_list [1.]; A.of_list [2.; 3.]]); let check l = let f (len, acc) n = (len + n, A.init n (fun i -> Float.of_int (len + i)) :: acc) diff --git a/compiler/tests-ocaml/lib-format/dune b/compiler/tests-ocaml/lib-format/dune index 6ec16a379d..af12de411d 100644 --- a/compiler/tests-ocaml/lib-format/dune +++ b/compiler/tests-ocaml/lib-format/dune @@ -10,3 +10,13 @@ (>= %{ocaml_version} 5.1)) (libraries ocaml_testing) (modes js wasm)) + +(tests + (names tlprintf) + (libraries ocaml_testing) + (build_if + (>= %{ocaml_version} 5.5)) + (modes + js + wasm + (best exe))) diff --git a/compiler/tests-ocaml/lib-format/tlprintf.expected b/compiler/tests-ocaml/lib-format/tlprintf.expected new file mode 100644 index 0000000000..b50b7c2a1b --- /dev/null +++ b/compiler/tests-ocaml/lib-format/tlprintf.expected @@ -0,0 +1,7 @@ +Delayed printf + 0 1 2 +Miscellaneous tests + 3 4 5 6 7 8 9 10 11 +end of tests + +All tests succeeded. diff --git a/compiler/tests-ocaml/lib-format/tlprintf.ml b/compiler/tests-ocaml/lib-format/tlprintf.ml new file mode 100644 index 0000000000..472597bfe7 --- /dev/null +++ b/compiler/tests-ocaml/lib-format/tlprintf.ml @@ -0,0 +1,64 @@ +(* TEST + include testing; + flags = "-no-strict-formats"; +*) + +(* + +A test file for the heterogeneous list variants Format module. + +*) + +open Testing;; +open Format;; + +exception Test of string +type tster = { x: string; y: int } + +let say s = Printf.printf s;; + +try + + say "Delayed printf\n%!"; + let t1 fmt = lfprintf fmt "%i - %s" [1; "bar"] in + test (lasprintf "foo %t" [t1] = "foo 1 - bar"); + let t2 fmt = lfprintf fmt "%a@]" [(pp_print_list pp_print_int); [1; 2; 3]] in + test (lasprintf "foo @[%t@,%s" [t2; "bar"] = "foo 1\n 2\n 3\nbar"); + test (lasprintf "%t @[%t" [t1; t2] = "1 - bar 123"); + + say "\nMiscellaneous tests\n%!"; + test (lasprintf "%d, %.2f, %s" [42; 3.14159; "ocaml"] = "42, 3.14, ocaml"); + + let pp_custom fmt p = lfprintf fmt "x = %s, y = %d" [p.x; p.y] in + let p = { x = "ocaml"; y = 42 } in + test (lasprintf "%a" [pp_custom; p] = "x = ocaml, y = 42"); + + test (lasprintf "%s, %d, %.1f, %a" ["world"; 7; 2.718; pp_custom; p] = "world, 7, 2.7, x = ocaml, y = 42"); + + let pp_padded_list fmt l = + lfprintf fmt "[%s]" [ List.map (fun x -> lasprintf "%04d" [ x ]) l |> String.concat "; " ] in + test (lasprintf "%a" [pp_padded_list; [1; 23; 456]] = "[0001; 0023; 0456]"); + + test (lasprintf "%a" [(Format.pp_print_list Format.pp_print_int); [1; 23; 456]] = "123\n456"); + + let nested_format ppf = lfprintf ppf "%s, %d, %a" [ "final"; 42; pp_custom; p ] in + test (lasprintf "%s -> %t" [ "outer"; nested_format ] = "outer -> final, 42, x = ocaml, y = 42"); + + let delayed_format fmt = lfprintf fmt "%s, %d, %a" [ "final"; 42; pp_custom; p ] in + test (lasprintf "%s, %d, %.3f, %a, %t" + ["last"; 100; 3.141; pp_custom; p; delayed_format] + = "last, 100, 3.141, x = ocaml, y = 42, final, 42, x = ocaml, y = 42"); + + let l : _ Args.t = [ "ocaml"; 42; 3.14; 'c'; pp_custom; p ] in + test (lasprintf "%s, %d, %.3f, %c, %a" l = "ocaml, 42, 3.140, c, x = ocaml, y = 42"); + + (* emulating kfprintf *) + let test_exn fmt args = raise (Test (lasprintf fmt args)) in + test (try test_exn "%d %s" [ 42; "ocaml" ] with Test "42 ocaml" -> true | _ -> false); + + say "\nend of tests\n%!"; + +with e -> + say "unexpected exception: %s\n%!" (Printexc.to_string e); + test false; +;; diff --git a/compiler/tests-ocaml/lib-hashtbl/dune b/compiler/tests-ocaml/lib-hashtbl/dune index c6aa851e80..e1e3e482b9 100644 --- a/compiler/tests-ocaml/lib-hashtbl/dune +++ b/compiler/tests-ocaml/lib-hashtbl/dune @@ -20,6 +20,6 @@ (deps ../../../LICENSE) (modules htbl) (build_if - (>= %{ocaml_version} 5)) + (>= %{ocaml_version} 5.5)) (libraries) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-hashtbl/htbl.ml b/compiler/tests-ocaml/lib-hashtbl/htbl.ml index 4af75a9f02..b5249de2d6 100644 --- a/compiler/tests-ocaml/lib-hashtbl/htbl.ml +++ b/compiler/tests-ocaml/lib-hashtbl/htbl.ml @@ -130,10 +130,12 @@ module HofM (M: Map.S) : Hashtbl.SeededS with type key = M.key = let copy = Hashtbl.copy let add = Hashtbl.add let remove = Hashtbl.remove + let find_and_remove = Hashtbl.find_and_remove let find = Hashtbl.find let find_opt = Hashtbl.find_opt let find_all = Hashtbl.find_all let replace = Hashtbl.replace + let find_and_replace = Hashtbl.find_and_replace let mem = Hashtbl.mem let iter = Hashtbl.iter let fold = Hashtbl.fold @@ -272,3 +274,19 @@ let () = let l = List.sort compare l in List.iter (fun (k, v) -> Printf.printf "%i,%i\n" k v) l; Printf.printf "%i elements\n" (Hashtbl.length h) + +let () = + let h = Hashtbl.create 16 in + Hashtbl.add h 0 0; + assert (Hashtbl.find_and_replace h 0 1 = Some 0); + assert (Hashtbl.find_and_remove h 0 = Some 1); + assert (Hashtbl.find_and_remove h 0 = None); + assert (Hashtbl.find_and_replace h 0 1 = None); + assert (Hashtbl.find_and_remove h 0 = Some 1); + Hashtbl.clear h; + Hashtbl.add h 0 0; + Hashtbl.add h 0 1; + assert (Hashtbl.find_and_replace h 0 2 = Some 1); + assert (Hashtbl.find_and_remove h 0 = Some 2); + assert (Hashtbl.find_and_remove h 0 = Some 0); + assert (Hashtbl.find_and_remove h 0 = None); diff --git a/compiler/tests-ocaml/lib-int/dune b/compiler/tests-ocaml/lib-int/dune index a53598eb62..7c31dd5e56 100644 --- a/compiler/tests-ocaml/lib-int/dune +++ b/compiler/tests-ocaml/lib-int/dune @@ -1,6 +1,6 @@ (tests (names test) (build_if - (>= %{ocaml_version} 5.3)) + (>= %{ocaml_version} 5.5)) (libraries) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-int/test.ml b/compiler/tests-ocaml/lib-int/test.ml index 2fdee39520..64eb0376e3 100644 --- a/compiler/tests-ocaml/lib-int/test.ml +++ b/compiler/tests-ocaml/lib-int/test.ml @@ -18,6 +18,44 @@ let test_arith () = assert (Int.abs 5 = 5); () +let test_div () = + let divzero f x y = + try ignore (f x y); false with Division_by_zero -> true in + let check x y = + if y = 0 then begin + assert (divzero Int.div x y); + assert (divzero Int.rem x y); + assert (divzero Int.fdiv x y); + assert (divzero Int.cdiv x y); + assert (divzero Int.ediv x y); + assert (divzero Int.erem x y) + end else begin + let q = Int.div x y + and r = Int.rem x y + and f = Int.fdiv x y + and c = Int.cdiv x y + and q' = Int.ediv x y + and r' = Int.erem x y in + assert (x = Int.add (Int.mul q y) r); + assert (Int.abs r <= Int.abs y - 1); + assert (x = Int.add (Int.mul q' y) r'); + assert (0 <= r' && r' <= Int.abs y - 1); + assert (f <= q && q <= c); + if r = 0 then assert (f = q && q = c); + assert (q' = (if y > 0 then f else c)) + end in + for _i = 1 to 1000 do + check (Random.int_in_range ~min:Int.min_int ~max:Int.max_int) + (Random.int_in_range ~min:Int.min_int ~max:Int.max_int); + check (Random.int_in_range ~min:Int.min_int ~max:Int.max_int) + (Random.int_in_range ~min:(-10000) ~max:10000) + done; + let interesting_values = + [Int.min_int; -119; -99; -3; -2; -1; 0; 1; 2; 3; 99; 119; Int.max_int] in + List.iter + (fun x -> List.iter (check x) interesting_values) + interesting_values + let test_logops () = assert (Int.logand 0xF0F0 0xFFFF = 0xF0F0); assert (Int.logor 0xF0FF 0x0F0F = 0xFFFF); @@ -60,6 +98,68 @@ let test_min_max () = assert (Int.max 2 3 = 3); assert (Int.min 2 3 = 2) +let naive_popcount n = + let c = ref 0 in + for i = 0 to Sys.int_size - 1 do + if Int.(logand n (shift_left 1 i)) <> 0 then incr c + done; + !c + +let in_unsigned_range x nbits = + if nbits < 0 then false else + if nbits >= Sys.int_size then true else + 0 <= x && x <= Int.(pred (shift_left 1 nbits)) + +let in_signed_range x nbits = + if nbits < 1 then false else + if nbits >= Sys.int_size then true else + let bound = Int.shift_left 1 (nbits - 1) in + Int.(neg bound <= x && x <= pred bound) + +let top_unsigned_bits x nbits = + if nbits <= 0 then 0 else Int.(shift_right_logical x (Sys.int_size - nbits)) + +let top_signed_bits x nbits = + if nbits <= 0 then 0 else Int.(shift_right x (Sys.int_size - nbits)) + +let test_bitcounts () = + let check n = + let a = Int.unsigned_bitsize n + and z = Int.leading_zeros n + and b = Int.signed_bitsize n + and s = Int.leading_sign_bits n in + assert (a + z = Sys.int_size); + assert (b + s = Sys.int_size); + (* Check 0 <= n < 2^a (unsigned) *) + assert (in_unsigned_range n a); + if a > 0 then assert (not (in_unsigned_range n (a - 1))); + (* Check -2^{b-1} <= n < 2^{b-1} - 1 (signed) *) + assert (in_signed_range n b); + if b > 1 then assert (not (in_signed_range n (b - 1))); + (* Check top z bits are 0 and the next bit is 1 *) + assert (top_unsigned_bits n z = 0); + assert (z = Sys.int_size || top_unsigned_bits n (z+1) <> 0); + (* Check top s + 1 bits are sign bits and the next bit is not *) + assert (let x = top_signed_bits n (s+1) in x = 0 || x = -1); + assert (s = Sys.int_size - 1 + || let x = top_signed_bits n (s+2) in x <> 0 && x <> -1); + (* Check bottom t bits are 0 and the next bit is 1 *) + let t = Int.trailing_zeros n in + if n = 0 then assert (t = Sys.int_size) else begin + let m = Int.(shift_left (-1) t) in + assert (Int.(logand n m) = n); + assert (Int.(logand n (shift_left m 1)) <> n) + end; + (* Check popcount against naive count *) + let p = Int.popcount n in + assert (p = naive_popcount n) in + List.iter check + [0; 1; 2; 3; -1; -2; -3; Int.min_int; Int.max_int]; + for _i = 1 to 1000 do + check (Int.shift_left (Random.int 0xFF) (Random.int (Sys.int_size - 8))); + check (Random.int_in_range ~min: Int.min_int ~max: Int.max_int) + done + let test_hash () = let f n = assert (Hashtbl.hash n = Int.hash n); @@ -70,12 +170,14 @@ let test_hash () = let tests () = test_consts (); test_arith (); + test_div (); test_logops (); test_equal (); test_compare (); test_float_conv (); test_string_conv (); test_min_max (); + test_bitcounts (); test_hash (); () diff --git a/compiler/tests-ocaml/lib-int32/dune b/compiler/tests-ocaml/lib-int32/dune new file mode 100644 index 0000000000..7c31dd5e56 --- /dev/null +++ b/compiler/tests-ocaml/lib-int32/dune @@ -0,0 +1,6 @@ +(tests + (names test) + (build_if + (>= %{ocaml_version} 5.5)) + (libraries) + (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-int32/test.expected b/compiler/tests-ocaml/lib-int32/test.expected new file mode 100644 index 0000000000..d86bac9de5 --- /dev/null +++ b/compiler/tests-ocaml/lib-int32/test.expected @@ -0,0 +1 @@ +OK diff --git a/compiler/tests-ocaml/lib-int32/test.ml b/compiler/tests-ocaml/lib-int32/test.ml new file mode 100644 index 0000000000..ec358753b4 --- /dev/null +++ b/compiler/tests-ocaml/lib-int32/test.ml @@ -0,0 +1,174 @@ +(* TEST *) + +let test_consts () = + assert (Int32.zero = 0l); + assert (Int32.one = 1l); + assert (Int32.minus_one = -1l); + () + +let test_arith () = + assert (Int32.add 2l 4l = 6l); + assert (Int32.sub 6l 2l = 4l); + assert (Int32.mul 6l 2l = 12l); + assert (Int32.div 12l 2l = 6l); + assert (Int32.rem 5l 2l = 1l); + assert (Int32.succ 5l = 6l); + assert (Int32.pred 5l = 4l); + assert (Int32.abs (-5l) = 5l); + assert (Int32.abs 5l = 5l); + () + +let test_div () = + let divzero f x y = + try ignore (f x y); false with Division_by_zero -> true in + let check x y = + if y = 0l then begin + assert (divzero Int32.div x y); + assert (divzero Int32.rem x y); + assert (divzero Int32.fdiv x y); + assert (divzero Int32.cdiv x y); + assert (divzero Int32.ediv x y); + assert (divzero Int32.erem x y) + end else begin + let q = Int32.div x y + and r = Int32.rem x y + and f = Int32.fdiv x y + and c = Int32.cdiv x y + and q' = Int32.ediv x y + and r' = Int32.erem x y in + assert (x = Int32.add (Int32.mul q y) r); + assert (Int32.abs r <= Int32.(sub (abs y) 1l)); + assert (x = Int32.add (Int32.mul q' y) r'); + assert (0l <= r' && r' <= Int32.(sub (abs y) 1l)); + assert (f <= q && q <= c); + if r = 0l then assert (f = q && q = c); + assert (q' = (if y > 0l then f else c)) + end in + for _i = 1 to 1000 do + check (Random.bits32()) (Random.bits32()); + check (Random.bits32()) + (Random.int32_in_range ~min:(-10000l) ~max:10000l) + done; + let interesting_values = + [Int32.min_int; -119l; -99l; -3l; -2l; -1l; 0l; + 1l; 2l; 3l; 99l; 119l; Int32.max_int] in + List.iter + (fun x -> List.iter (check x) interesting_values) + interesting_values + +let test_logops () = + assert (Int32.logand 0xF0F0l 0xFFFFl = 0xF0F0l); + assert (Int32.logor 0xF0FFl 0x0F0Fl = 0xFFFFl); + assert (Int32.logxor 0xF0FFl 0x0F0Fl = 0xFFF0l); + assert (Int32.lognot Int32.max_int = Int32.min_int); + assert (Int32.shift_left 1l 4 = 16l); + assert (Int32.shift_right 16l 4 = 1l); + assert (Int32.shift_right (-16l) 4 = (-1l)); + assert (Int32.shift_right (-16l) 4 = (-1l)); + assert (Int32.shift_right_logical Int32.min_int 31 = 1l); + () + +let test_equal () = + assert (Int32.equal 1l 1l = true); + assert (Int32.equal 1l 0l = false); + () + +let test_compare () = + assert (Int32.compare 3l 3l = 0); + assert (Int32.compare 3l 4l = (-1)); + assert (Int32.compare 4l 3l = 1); + assert (Int32.compare (-4l) 3l = -1); + assert (Int32.compare 3l (-4l) = 1); + () + +let test_float_conv () = + assert (Int32.to_float 5l = 5.0); + assert (Int32.of_float 5. = 5l); + assert (Int32.of_float 5.9 = 5l); + () + +let test_string_conv () = + assert (Int32.to_string 50l = "50"); + () + +let test_min_max () = + assert (Int32.max 2l 3l = 3l); + assert (Int32.min 2l 3l = 2l) + +let naive_popcount n = + let c = ref 0 in + for i = 0 to 31 do + if Int32.(logand n (shift_left 1l i)) <> 0l then incr c + done; + !c + +let in_unsigned_range x nbits = + if nbits < 0 then false else + if nbits >= 32 then true else + 0l <= x && x <= Int32.(pred (shift_left 1l nbits)) + +let in_signed_range x nbits = + if nbits < 1 then false else + if nbits >= 32 then true else + let bound = Int32.shift_left 1l (nbits - 1) in + Int32.(neg bound <= x && x <= pred bound) + +let top_unsigned_bits x nbits = + if nbits <= 0 then 0l else Int32.(shift_right_logical x (32 - nbits)) + +let top_signed_bits x nbits = + if nbits <= 0 then 0l else Int32.(shift_right x (32 - nbits)) + +let test_bitcounts () = + let check n = + let a = Int32.unsigned_bitsize n + and z = Int32.leading_zeros n + and b = Int32.signed_bitsize n + and s = Int32.leading_sign_bits n in + assert (a + z = 32); + assert (b + s = 32); + (* Check 0 <= n < 2^a (unsigned) *) + assert (in_unsigned_range n a); + if a > 0 then assert (not (in_unsigned_range n (a - 1))); + (* Check -2^{b-1} <= n < 2^{b-1} - 1 (signed) *) + assert (in_signed_range n b); + if b > 1 then assert (not (in_signed_range n (b - 1))); + (* Check top z bits are 0 and the next bit is 1 *) + assert (top_unsigned_bits n z = 0l); + assert (z = 32 || top_unsigned_bits n (z+1) <> 0l); + (* Check top s + 1 bits are sign bits and the next bit is not *) + assert (let x = top_signed_bits n (s+1) in x = 0l || x = -1l); + assert (s = 31 || let x = top_signed_bits n (s+2) in x <> 0l && x <> -1l); + (* Check bottom t bits are 0 and the next bit is 1 *) + let t = Int32.trailing_zeros n in + if n = 0l then assert (t = 32) else begin + let m = Int32.(shift_left (-1l) t) in + assert (Int32.(logand n m) = n); + assert (Int32.(logand n (shift_left m 1)) <> n) + end; + (* Check popcount against naive count *) + let p = Int32.popcount n in + assert (p = naive_popcount n) in + List.iter check + [0l; 1l; 2l; 3l; -1l; -2l; -3l; Int32.min_int; Int32.max_int]; + for _i = 1 to 1000 do + check (Int32.shift_left (Random.int32 0xFFl) (Random.int 16)); + check (Random.bits32()) + done + +let tests () = + test_consts (); + test_arith (); + test_div (); + test_logops (); + test_equal (); + test_compare (); + test_float_conv (); + test_string_conv (); + test_min_max (); + test_bitcounts (); + () + +let () = + tests (); + print_endline "OK" diff --git a/compiler/tests-ocaml/lib-int64/dune b/compiler/tests-ocaml/lib-int64/dune index 6987384f87..42c49bcc62 100644 --- a/compiler/tests-ocaml/lib-int64/dune +++ b/compiler/tests-ocaml/lib-int64/dune @@ -1,4 +1,6 @@ (tests (names test issue9460) (libraries) + (build_if + (>= %{ocaml_version} 5.5)) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-int64/test.ml b/compiler/tests-ocaml/lib-int64/test.ml index c518ad9a08..c3c68d8be0 100644 --- a/compiler/tests-ocaml/lib-int64/test.ml +++ b/compiler/tests-ocaml/lib-int64/test.ml @@ -18,6 +18,44 @@ let test_arith () = assert (Int64.abs 5L = 5L); () +let test_div () = + let divzero f x y = + try ignore (f x y); false with Division_by_zero -> true in + let check x y = + if y = 0L then begin + assert (divzero Int64.div x y); + assert (divzero Int64.rem x y); + assert (divzero Int64.fdiv x y); + assert (divzero Int64.cdiv x y); + assert (divzero Int64.ediv x y); + assert (divzero Int64.erem x y) + end else begin + let q = Int64.div x y + and r = Int64.rem x y + and f = Int64.fdiv x y + and c = Int64.cdiv x y + and q' = Int64.ediv x y + and r' = Int64.erem x y in + assert (x = Int64.add (Int64.mul q y) r); + assert (Int64.abs r <= Int64.(sub (abs y) 1L)); + assert (x = Int64.add (Int64.mul q' y) r'); + assert (0L <= r' && r' <= Int64.(sub (abs y) 1L)); + assert (f <= q && q <= c); + if r = 0L then assert (f = q && q = c); + assert (q' = (if y > 0L then f else c)) + end in + for _i = 1 to 1000 do + check (Random.bits64()) (Random.bits64()); + check (Random.bits64()) + (Random.int64_in_range ~min:(-10000L) ~max:10000L) + done; + let interesting_values = + [Int64.min_int; -119L; -99L; -3L; -2L; -1L; 0L; + 1L; 2L; 3L; 99L; 119L; Int64.max_int] in + List.iter + (fun x -> List.iter (check x) interesting_values) + interesting_values + let test_logops () = assert (Int64.logand 0xF0F0L 0xFFFFL = 0xF0F0L); assert (Int64.logor 0xF0FFL 0x0F0FL = 0xFFFFL); @@ -59,15 +97,78 @@ let test_min_max () = assert (Int64.max 2L 3L = 3L); assert (Int64.min 2L 3L = 2L) +let naive_popcount n = + let c = ref 0 in + for i = 0 to 63 do + if Int64.(logand n (shift_left 1L i)) <> 0L then incr c + done; + !c + +let in_unsigned_range x nbits = + if nbits < 0 then false else + if nbits >= 64 then true else + 0L <= x && x <= Int64.(pred (shift_left 1L nbits)) + +let in_signed_range x nbits = + if nbits < 1 then false else + if nbits >= 64 then true else + let bound = Int64.shift_left 1L (nbits - 1) in + Int64.(neg bound <= x && x <= pred bound) + +let top_unsigned_bits x nbits = + if nbits <= 0 then 0L else Int64.(shift_right_logical x (64 - nbits)) + +let top_signed_bits x nbits = + if nbits <= 0 then 0L else Int64.(shift_right x (64 - nbits)) + +let test_bitcounts () = + let check n = + let a = Int64.unsigned_bitsize n + and z = Int64.leading_zeros n + and b = Int64.signed_bitsize n + and s = Int64.leading_sign_bits n in + assert (a + z = 64); + assert (b + s = 64); + (* Check 0 <= n < 2^a (unsigned) *) + assert (in_unsigned_range n a); + if a > 0 then assert (not (in_unsigned_range n (a - 1))); + (* Check -2^{b-1} <= n < 2^{b-1} - 1 (signed) *) + assert (in_signed_range n b); + if b > 1 then assert (not (in_signed_range n (b - 1))); + (* Check top z bits are 0 and the next bit is 1 *) + assert (top_unsigned_bits n z = 0L); + assert (z = 64 || top_unsigned_bits n (z+1) <> 0L); + (* Check top s + 1 bits are sign bits and the next bit is not *) + assert (let x = top_signed_bits n (s+1) in x = 0L || x = -1L); + assert (s = 63 || let x = top_signed_bits n (s+2) in x <> 0L && x <> -1L); + (* Check bottom t bits are 0 and the next bit is 1 *) + let t = Int64.trailing_zeros n in + if n = 0L then assert (t = 64) else begin + let m = Int64.(shift_left (-1L) t) in + assert (Int64.(logand n m) = n); + assert (Int64.(logand n (shift_left m 1)) <> n) + end; + (* Check popcount against naive count *) + let p = Int64.popcount n in + assert (p = naive_popcount n) in + List.iter check + [0L; 1L; 2L; 3L; -1L; -2L; -3L; Int64.min_int; Int64.max_int]; + for _i = 1 to 1000 do + check (Int64.shift_left (Random.int64 0xFFL) (Random.int 48)); + check (Random.bits64()) + done + let tests () = test_consts (); test_arith (); + test_div (); test_logops (); test_equal (); test_compare (); test_float_conv (); test_string_conv (); test_min_max (); + test_bitcounts (); () let () = diff --git a/compiler/tests-ocaml/lib-list/dune b/compiler/tests-ocaml/lib-list/dune index 1bdcacba13..86501c9f52 100644 --- a/compiler/tests-ocaml/lib-list/dune +++ b/compiler/tests-ocaml/lib-list/dune @@ -2,5 +2,5 @@ (names test) (libraries) (build_if - (>= %{ocaml_version} 5.3)) + (>= %{ocaml_version} 5.5)) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-list/test.ml b/compiler/tests-ocaml/lib-list/test.ml index bcca022f61..24b50fd185 100644 --- a/compiler/tests-ocaml/lib-list/test.ml +++ b/compiler/tests-ocaml/lib-list/test.ml @@ -8,6 +8,12 @@ let string_of_even_opt x = else None +let string_of_add_even_opt i x = + if is_even ( i + x) then + Some (string_of_int (i + x)) + else + None + let string_of_even_or_int x = if is_even x then Either.Left (string_of_int x) @@ -68,11 +74,13 @@ let () = assert (List.take 3 [1; 2; 3; 4; 5] = [1; 2; 3]); assert (List.take 3 [1; 2] = [1; 2]); assert (List.take 3 [] = []); + assert (List.take (-1) [1; 2] = []); assert (List.take 0 [1; 2] = []); assert (List.drop 6 hello_world = world); assert (List.drop 3 [1; 2; 3; 4; 5] = [4; 5]); assert (List.drop 3 [1; 2] = []); assert (List.drop 3 [] = []); + assert (List.drop (-1) [1; 2] = [1; 2]); assert (List.drop 0 [1; 2] = [1; 2]); assert (List.take_while (fun x -> x < 3) [1; 2; 3; 4; 1; 2; 3; 4] = [1; 2]); @@ -107,6 +115,9 @@ let () = assert (not (List.is_empty [1])); assert (List.filter_map string_of_even_opt l = ["0";"2";"4";"6";"8"]); + assert + ( List.filter_mapi string_of_add_even_opt l + = ["0";"2";"4";"6";"8";"10";"12";"14";"16";"18"]); assert (List.concat_map (fun i -> [i; i+1]) [1; 5] = [1; 2; 5; 6]); assert ( let count = ref 0 in @@ -141,6 +152,39 @@ let () = () ;; +(* Check that List.sort_uniq keeps first occurrences of duplicates. *) +let () = + let keep_first_duplicates l = + let tagged = List.combine l (List.init (List.length l) Fun.id) in + let sorted = + List.sort_uniq (fun c1 c2 -> Int.compare (fst c1) (fst c2)) tagged + in + let is_first_tag (x, y) = + (* Check whether the second component of the argument is the element + first associated by [tagged] with the first component of the + argument. *) + List.assoc x tagged = y + in + List.for_all is_first_tag sorted + in + let randlist maxlen = + let len = Random.int maxlen in + (* Take values in [0, (3 * len) / 2] to have some collisions. *) + List.init len (fun _ -> Random.int ( 1 + (3 * len) / 2 )) + in + for _ = 0 to 20 do + let l = randlist 99 in + if not (keep_first_duplicates l) then ( + Format.printf + "List.sort_uniq did not keep first duplicates when sorting the list@ \ + @[[%a]@]@." + Format.( + pp_print_list ~pp_sep:(fun out () -> fprintf out ";@ ") pp_print_int) + l; + assert false) + done +;; + (* Empty test case *) let () = assert ((List.init 0 (fun x -> x)) = []); diff --git a/compiler/tests-ocaml/lib-nativeint/dune b/compiler/tests-ocaml/lib-nativeint/dune new file mode 100644 index 0000000000..7c31dd5e56 --- /dev/null +++ b/compiler/tests-ocaml/lib-nativeint/dune @@ -0,0 +1,6 @@ +(tests + (names test) + (build_if + (>= %{ocaml_version} 5.5)) + (libraries) + (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-nativeint/test.expected b/compiler/tests-ocaml/lib-nativeint/test.expected new file mode 100644 index 0000000000..d86bac9de5 --- /dev/null +++ b/compiler/tests-ocaml/lib-nativeint/test.expected @@ -0,0 +1 @@ +OK diff --git a/compiler/tests-ocaml/lib-nativeint/test.ml b/compiler/tests-ocaml/lib-nativeint/test.ml new file mode 100644 index 0000000000..5bdcc48ac6 --- /dev/null +++ b/compiler/tests-ocaml/lib-nativeint/test.ml @@ -0,0 +1,176 @@ +(* TEST *) + +let test_consts () = + assert (Nativeint.zero = 0n); + assert (Nativeint.one = 1n); + assert (Nativeint.minus_one = -1n); + () + +let test_arith () = + assert (Nativeint.add 2n 4n = 6n); + assert (Nativeint.sub 6n 2n = 4n); + assert (Nativeint.mul 6n 2n = 12n); + assert (Nativeint.div 12n 2n = 6n); + assert (Nativeint.rem 5n 2n = 1n); + assert (Nativeint.succ 5n = 6n); + assert (Nativeint.pred 5n = 4n); + assert (Nativeint.abs (-5n) = 5n); + assert (Nativeint.abs 5n = 5n); + () + +let test_div () = + let divzero f x y = + try ignore (f x y); false with Division_by_zero -> true in + let check x y = + if y = 0n then begin + assert (divzero Nativeint.div x y); + assert (divzero Nativeint.rem x y); + assert (divzero Nativeint.fdiv x y); + assert (divzero Nativeint.cdiv x y); + assert (divzero Nativeint.ediv x y); + assert (divzero Nativeint.erem x y) + end else begin + let q = Nativeint.div x y + and r = Nativeint.rem x y + and f = Nativeint.fdiv x y + and c = Nativeint.cdiv x y + and q' = Nativeint.ediv x y + and r' = Nativeint.erem x y in + assert (x = Nativeint.add (Nativeint.mul q y) r); + assert (Nativeint.abs r <= Nativeint.(sub (abs y) 1n)); + assert (x = Nativeint.add (Nativeint.mul q' y) r'); + assert (0n <= r' && r' <= Nativeint.(sub (abs y) 1n)); + assert (f <= q && q <= c); + if r = 0n then assert (f = q && q = c); + assert (q' = (if y > 0n then f else c)) + end in + for _i = 1 to 1000 do + check (Random.nativebits()) (Random.nativebits()); + check (Random.nativebits()) + (Random.nativeint_in_range ~min:(-10000n) ~max:10000n) + done; + let interesting_values = + [Nativeint.min_int; -119n; -99n; -3n; -2n; -1n; 0n; + 1n; 2n; 3n; 99n; 119n; Nativeint.max_int] in + List.iter + (fun x -> List.iter (check x) interesting_values) + interesting_values + +let test_logops () = + assert (Nativeint.logand 0xF0F0n 0xFFFFn = 0xF0F0n); + assert (Nativeint.logor 0xF0FFn 0x0F0Fn = 0xFFFFn); + assert (Nativeint.logxor 0xF0FFn 0x0F0Fn = 0xFFF0n); + assert (Nativeint.lognot Nativeint.max_int = Nativeint.min_int); + assert (Nativeint.shift_left 1n 4 = 16n); + assert (Nativeint.shift_right 16n 4 = 1n); + assert (Nativeint.shift_right (-16n) 4 = (-1n)); + assert (Nativeint.shift_right (-16n) 4 = (-1n)); + assert (Nativeint.(shift_right_logical min_int (size - 1)) = 1n); + () + +let test_equal () = + assert (Nativeint.equal 1n 1n = true); + assert (Nativeint.equal 1n 0n = false); + () + +let test_compare () = + assert (Nativeint.compare 3n 3n = 0); + assert (Nativeint.compare 3n 4n = (-1)); + assert (Nativeint.compare 4n 3n = 1); + assert (Nativeint.compare (-4n) 3n = -1); + assert (Nativeint.compare 3n (-4n) = 1); + () + +let test_float_conv () = + assert (Nativeint.to_float 5n = 5.0); + assert (Nativeint.of_float 5. = 5n); + assert (Nativeint.of_float 5.9 = 5n); + () + +let test_string_conv () = + assert (Nativeint.to_string 50n = "50"); + () + +let test_min_max () = + assert (Nativeint.max 2n 3n = 3n); + assert (Nativeint.min 2n 3n = 2n) + +let naive_popcount n = + let c = ref 0 in + for i = 0 to Nativeint.size - 1 do + if Nativeint.(logand n (shift_left 1n i)) <> 0n then incr c + done; + !c + +let in_unsigned_range x nbits = + if nbits < 0 then false else + if nbits >= Nativeint.size then true else + 0n <= x && x <= Nativeint.(pred (shift_left 1n nbits)) + +let in_signed_range x nbits = + if nbits < 1 then false else + if nbits >= Nativeint.size then true else + let bound = Nativeint.shift_left 1n (nbits - 1) in + Nativeint.(neg bound <= x && x <= pred bound) + +let top_unsigned_bits x nbits = + if nbits <= 0 then 0n else Nativeint.(shift_right_logical x (size - nbits)) + +let top_signed_bits x nbits = + if nbits <= 0 then 0n else Nativeint.(shift_right x (size - nbits)) + +let test_bitcounts () = + let check n = + let a = Nativeint.unsigned_bitsize n + and z = Nativeint.leading_zeros n + and b = Nativeint.signed_bitsize n + and s = Nativeint.leading_sign_bits n in + assert (a + z = Nativeint.size); + assert (b + s = Nativeint.size); + (* Check 0 <= n < 2^a (unsigned) *) + assert (in_unsigned_range n a); + if a > 0 then assert (not (in_unsigned_range n (a - 1))); + (* Check -2^{b-1} <= n < 2^{b-1} - 1 (signed) *) + assert (in_signed_range n b); + if b > 1 then assert (not (in_signed_range n (b - 1))); + (* Check top z bits are 0 and the next bit is 1 *) + assert (top_unsigned_bits n z = 0n); + assert (z = Nativeint.size || top_unsigned_bits n (z+1) <> 0n); + (* Check top s + 1 bits are sign bits and the next bit is not *) + assert (let x = top_signed_bits n (s+1) in x = 0n || x = -1n); + assert (s = Nativeint.size - 1 + || let x = top_signed_bits n (s+2) in x <> 0n && x <> -1n); + (* Check bottom t bits are 0 and the next bit is 1 *) + let t = Nativeint.trailing_zeros n in + if n = 0n then assert (t = Nativeint.size) else begin + let m = Nativeint.(shift_left (-1n) t) in + assert (Nativeint.(logand n m) = n); + assert (Nativeint.(logand n (shift_left m 1)) <> n) + end; + (* Check popcount against naive count *) + let p = Nativeint.popcount n in + assert (p = naive_popcount n) in + List.iter check + [0n; 1n; 2n; 3n; -1n; -2n; -3n; Nativeint.min_int; Nativeint.max_int]; + for _i = 1 to 1000 do + check (Nativeint.shift_left + (Random.nativeint 0xFFn) + (Random.int (Nativeint.size - 16))); + check (Random.nativebits()) + done + +let tests () = + test_consts (); + test_arith (); + test_logops (); + test_equal (); + test_compare (); + test_float_conv (); + test_string_conv (); + test_min_max (); + test_bitcounts (); + () + +let () = + tests (); + print_endline "OK" diff --git a/compiler/tests-ocaml/lib-option/dune b/compiler/tests-ocaml/lib-option/dune index 16342d6417..86501c9f52 100644 --- a/compiler/tests-ocaml/lib-option/dune +++ b/compiler/tests-ocaml/lib-option/dune @@ -1,4 +1,6 @@ (tests (names test) (libraries) + (build_if + (>= %{ocaml_version} 5.5)) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-option/test.ml b/compiler/tests-ocaml/lib-option/test.ml index 5383c382c2..055fc67318 100644 --- a/compiler/tests-ocaml/lib-option/test.ml +++ b/compiler/tests-ocaml/lib-option/test.ml @@ -96,6 +96,13 @@ let test_to_option_list_seq () = assert ((Option.to_seq None) () = Seq.Nil); () +let test_product () = + assert (Option.product None None = None); + assert (Option.product None (Some 1) = None); + assert (Option.product (Some 1) None = None); + assert (Option.product (Some 1) (Some 2) = Some (1, 2)); + () + let tests () = test_none_some (); test_value (); @@ -109,6 +116,7 @@ let tests () = test_equal (); test_compare (); test_to_option_list_seq (); + test_product (); () let () = diff --git a/compiler/tests-ocaml/lib-pair/dune b/compiler/tests-ocaml/lib-pair/dune new file mode 100644 index 0000000000..7c31dd5e56 --- /dev/null +++ b/compiler/tests-ocaml/lib-pair/dune @@ -0,0 +1,6 @@ +(tests + (names test) + (build_if + (>= %{ocaml_version} 5.5)) + (libraries) + (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-pair/test.expected b/compiler/tests-ocaml/lib-pair/test.expected new file mode 100644 index 0000000000..d86bac9de5 --- /dev/null +++ b/compiler/tests-ocaml/lib-pair/test.expected @@ -0,0 +1 @@ +OK diff --git a/compiler/tests-ocaml/lib-pair/test.ml b/compiler/tests-ocaml/lib-pair/test.ml new file mode 100644 index 0000000000..0662a85bad --- /dev/null +++ b/compiler/tests-ocaml/lib-pair/test.ml @@ -0,0 +1,83 @@ +(* TEST *) + +let test_make () = + let () = assert (Pair.make 1 "x" = (1, "x")) in + let () = assert (Pair.make 'e' [] = ('e', [])) in + () + +let test_fst () = + let () = assert (Pair.fst (1, "x") = 1) in + let () = assert (Pair.fst ('e', []) = 'e') in + () + +let test_snd () = + let () = assert (Pair.snd (1, "x") = "x") in + let () = assert (Pair.snd ('e', []) = []) in + () + +let test_swap () = + let () = assert (Pair.swap (1, "x") = ("x", 1)) in + let () = assert (Pair.swap ('e', []) = ([], 'e')) in + () + +let test_fold () = + let () = assert (Pair.fold (+) (2, 3) = 5) in + let is_same i s = (s = string_of_int i) in + let () = assert (Pair.fold is_same (2, "2")) in + () + +let test_map () = + let () = assert (Pair.map succ (fun a -> a ^ a) (3, "a") = (4, "aa")) in + () + +let test_iter () = + let iterator = ref 0 in + let add x = iterator := !iterator + x in + let mul x = iterator := !iterator * x in + let () = Pair.iter add mul (4, 3) in + let () = assert (!iterator = 12) in + () + +let test_map_fst () = + let () = assert (Pair.map_fst succ (1, "s") = (2, "s")) in + let () = assert (Pair.map_fst (Fun.const []) (None, 'e') = ([], 'e')) in + () + +let test_map_snd () = + let () = assert (Pair.map_snd succ ("s", 1) = ("s", 2)) in + let () = assert (Pair.map_snd (Fun.const []) ('e', None) = ('e', [])) in + () + +let test_equal () = + assert (Pair.equal (fun _ _ -> true) String.equal (3, "e") (4, "e")) ; + assert (Pair.equal Int.equal String.equal (3, "e") (4, "e") = false) + +let test_compare () = + (* reflexive *) + assert (Pair.compare Int.compare String.compare (3, "a") (3, "a") = 0) ; + (* symmetric (and total) *) + assert (Pair.compare Int.compare Char.compare (3, '3') (4, '4') + * Pair.compare Int.compare Char.compare (4, '4') (3, '3') < 0) ; + (* transitive *) + let cmp1 = Pair.compare Int.compare Char.compare (3, '3') (4, '4') in + let cmp2 = Pair.compare Int.compare Char.compare (4, '4') (5, '5') in + let cmp3 = Pair.compare Int.compare Char.compare (3, '3') (5, '5') in + if cmp1 * cmp2 > 0 then (* 3 < 4 < 5 or 3 > 4 > 5 *) + assert (cmp1 * cmp3 > 0) + +let tests () = + test_make (); + test_fst (); + test_snd (); + test_swap (); + test_fold (); + test_map (); + test_map_fst (); + test_map_snd (); + test_equal (); + test_compare (); + () + +let () = + tests (); + print_endline "OK" diff --git a/compiler/tests-ocaml/lib-pqueue/dune b/compiler/tests-ocaml/lib-pqueue/dune new file mode 100644 index 0000000000..7c31dd5e56 --- /dev/null +++ b/compiler/tests-ocaml/lib-pqueue/dune @@ -0,0 +1,6 @@ +(tests + (names test) + (build_if + (>= %{ocaml_version} 5.5)) + (libraries) + (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-pqueue/test.expected b/compiler/tests-ocaml/lib-pqueue/test.expected new file mode 100644 index 0000000000..d86bac9de5 --- /dev/null +++ b/compiler/tests-ocaml/lib-pqueue/test.expected @@ -0,0 +1 @@ +OK diff --git a/compiler/tests-ocaml/lib-pqueue/test.ml b/compiler/tests-ocaml/lib-pqueue/test.ml new file mode 100644 index 0000000000..3986924aac --- /dev/null +++ b/compiler/tests-ocaml/lib-pqueue/test.ml @@ -0,0 +1,135 @@ +(* TEST *) + +(* testing with pairs (integer priority, string) *) +module E = struct + type t = int * string + let compare (p1,_) (p2,_) = Int.compare p1 p2 +end +module Q = Pqueue.MakeMin(E) + +let does_raise f q = + try + ignore (f q); + false + with Invalid_argument _ -> + true + +let check_is_empty q = + assert (Q.length q = 0); assert (Q.is_empty q); + assert (does_raise Q.get_min_elt q); assert (Q.min_elt q = None); + assert (Q.pop_min q = None); Q.remove_min q; assert (Q.length q = 0) + +let () = + let q = Q.create () in + check_is_empty q; + Q.add q (1, "a"); + assert (Q.length q = 1); assert (not (Q.is_empty q)); + assert (Q.get_min_elt q = (1, "a")); assert (Q.min_elt q = Some (1, "a")); + assert (Q.length q = 1); + assert (Q.pop_min q = Some (1, "a")); check_is_empty q; + Q.add q (2, "b"); + Q.add q (1, "a"); + assert (Q.get_min_elt q = (1, "a")); assert (Q.min_elt q = Some (1, "a")); + assert (Q.pop_min q = Some (1, "a")); assert (Q.length q = 1); + assert (Q.get_min_elt q = (2, "b")); assert (Q.min_elt q = Some (2, "b")); + Q.remove_min q; check_is_empty q; + Q.add q (2, "b"); + Q.add q (1, "a"); + Q.clear q; check_is_empty q; + () + +let () = + let q = Q.create () in + Q.add q (1, "a"); Q.add q (2, "b"); + let q' = Q.copy q in + Q.clear q; check_is_empty q; + assert (Q.length q' = 2) + +let () = + let q = Q.create () in + for n = 0 to 10 do + for x = n-1 downto 0 do Q.add q (x, "") done; + for x = 0 to n-1 do assert (Q.pop_min q = Some (x, "")) done; + check_is_empty q + done + +let () = + let q = Q.create () in + for n = 0 to 10 do + for x = n-1 downto 0 do Q.add q (x, "") done; + for x = 0 to n-1 do assert (Q.pop_min q = Some (x, "")) done; + check_is_empty q + done + +(* check iter_unordered and fold_unordered *) +let () = + let q = Q.create () in + for n = 0 to 10 do Q.add q (n, "") done; + let r = ref 0 in Q.iter_unordered (fun (x,_) -> r := !r + x) q; + assert (!r = 55); + assert (Q.fold_unordered (fun acc (x,_) -> acc+x) 0 q = 55) + +let () = + for n = 0 to 10 do + let a = Array.init n (fun i -> (i/3, string_of_int i)) in + let q = Q.of_array a in + assert (Q.length q = n); + for i = 0 to n - 1 do match Q.pop_min q with + | None -> assert false + | Some (x, _) -> assert (x = fst a.(i)) + done; + check_is_empty q + done + +let () = + let q = Q.create () in + let l = [2, "b"; 3, "c"; 1, "a"; 4, "d"; 0, ""] in + Q.add_iter q List.iter l; + assert (Q.min_elt q = Some (0, "")); + assert (Q.fold_unordered (fun acc (x, _) -> acc+x) 0 q = 10) + +(* check that min_elt and pop_min are consistent when several elements + have the same priority *) +let () = + let q = Q.create () in + Q.add q (1, "b"); Q.add q (1, "a"); Q.add q (1, "d"); Q.add q (1, "c"); + for _ = 1 to 4 do + let x = Q.min_elt q in assert (x = Q.pop_min q) + done; + () + +(* check that Max is indeed a max-pqueue *) +let () = + let open Pqueue.MakeMax(E) in + let q = create () in + add q (2, "b"); add q (1, "a"); add q (4, "d"); add q (3, "c"); + for i = 4 downto 1 do match pop_max q with + | None -> assert false + | Some (x, _) -> assert (x = i) + done + +(* testing with string elements *) +let () = + let open Pqueue.MakeMin(String) in + let a = [| "b"; "bar"; "a"; "aa"; "foo"; "ocaml" |] in + let n = Array.length a in + let q = create () in + for i = 0 to n - 1 do add q a.(i) done; + assert (length q = n); + Array.sort String.compare a; + for i = 0 to n - 1 do match pop_min q with + | None -> assert false + | Some x -> assert (x = a.(i)) + done; + assert (is_empty q) + +(* check the usage scenario from the .mli *) +module Prio : Pqueue.OrderedType = Int + +module PrioQueue = Pqueue.MakeMinPoly(struct + type 'a t = Prio.t * 'a + let compare (p1, _) (p2, _) = Prio.compare p1 p2 +end) + + +let () = print_endline "OK" diff --git a/compiler/tests-ocaml/lib-printf/dune b/compiler/tests-ocaml/lib-printf/dune index 18d080e7b8..0fda1a2292 100644 --- a/compiler/tests-ocaml/lib-printf/dune +++ b/compiler/tests-ocaml/lib-printf/dune @@ -5,3 +5,13 @@ js wasm (best exe))) + +(tests + (names tlprintf) + (libraries ocaml_testing) + (build_if + (>= %{ocaml_version} 5.5)) + (modes + js + wasm + (best exe))) diff --git a/compiler/tests-ocaml/lib-printf/tlprintf.expected b/compiler/tests-ocaml/lib-printf/tlprintf.expected new file mode 100644 index 0000000000..b082b5ff3c --- /dev/null +++ b/compiler/tests-ocaml/lib-printf/tlprintf.expected @@ -0,0 +1,5 @@ +Miscellaneous tests + 0 1 2 3 4 5 6 7 +end of tests + +All tests succeeded. diff --git a/compiler/tests-ocaml/lib-printf/tlprintf.ml b/compiler/tests-ocaml/lib-printf/tlprintf.ml new file mode 100644 index 0000000000..e130f8fc90 --- /dev/null +++ b/compiler/tests-ocaml/lib-printf/tlprintf.ml @@ -0,0 +1,55 @@ +(* TEST + include testing; + flags = "-no-strict-formats"; +*) + +(* + +A test file for the heterogeneous list variants of the Printf module. + +*) + +open Testing;; +open Printf;; + +exception Test of string +type tster = { x: string; y: int } + +let test_roundtrip fmt of_string s = + test (sprintf fmt (of_string s) = s) +;; + +try + lprintf "Miscellaneous tests\n%!" []; + test (lsprintf "%d, %.2f, %s" [42; 3.14159; "ocaml"] = "42, 3.14, ocaml"); + + let pp_custom () p = lsprintf "x = %s, y = %d" [p.x; p.y] in + let p = { x = "ocaml"; y = 42 } in + test (lsprintf "%a" [pp_custom; p] = "x = ocaml, y = 42"); + + test (lsprintf "%s, %d, %.1f, %a" ["world"; 7; 2.718; pp_custom; p] = "world, 7, 2.7, x = ocaml, y = 42"); + + let pp_padded_list () l = + lsprintf "[%s]" [ List.map (fun x -> lsprintf "%04d" [ x ]) l |> String.concat "; " ] in + test (lsprintf "%a" [pp_padded_list; [1; 23; 456]] = "[0001; 0023; 0456]"); + + let nested_print () = lsprintf "%s, %d, %a" [ "final"; 42; pp_custom; p ] in + test (lsprintf "%s -> %t" [ "outer"; nested_print ] = "outer -> final, 42, x = ocaml, y = 42"); + + let delayed_print () = lsprintf "%s, %d, %a" [ "final"; 42; pp_custom; p ] in + test (lsprintf "%s, %d, %.3f, %a, %t" + ["last"; 100; 3.141; pp_custom; p; delayed_print] + = "last, 100, 3.141, x = ocaml, y = 42, final, 42, x = ocaml, y = 42"); + + let l : _ Args.t = [ "ocaml"; 42; 3.14; 'c'; pp_custom; p ] in + test (lsprintf "%s, %d, %.3f, %c, %a" l = "ocaml, 42, 3.140, c, x = ocaml, y = 42"); + + (* emulating kfprintf *) + let test_exn fmt args = raise (Test (lsprintf fmt args)) in + test (try test_exn "%d %s" [ 42; "ocaml" ] with Test "42 ocaml" -> true | _ -> false); + + printf "\nend of tests\n%!"; +with e -> + printf "unexpected exception: %s\n%!" (Printexc.to_string e); + test false; +;; diff --git a/compiler/tests-ocaml/lib-result/dune b/compiler/tests-ocaml/lib-result/dune index 16342d6417..86501c9f52 100644 --- a/compiler/tests-ocaml/lib-result/dune +++ b/compiler/tests-ocaml/lib-result/dune @@ -1,4 +1,6 @@ (tests (names test) (libraries) + (build_if + (>= %{ocaml_version} 5.5)) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-result/test.ml b/compiler/tests-ocaml/lib-result/test.ml index c32c7dc395..02f68e7f2d 100644 --- a/compiler/tests-ocaml/lib-result/test.ml +++ b/compiler/tests-ocaml/lib-result/test.ml @@ -17,11 +17,22 @@ let test_value () = let test_get_ok_error () = assert (Result.get_ok (Ok 3) = 3); + assert (Result.get_ok' (Ok 3) = 3); assert_raise_invalid_argument Result.get_ok (Error "ha!"); + (match Result.get_ok' (Error "ha!") with + exception Invalid_argument "ha!" [@warning "-52"] -> (); + | _ -> assert false); assert (Result.get_error (Error "ha!") = "ha!"); assert_raise_invalid_argument Result.get_error (Ok 2); () +let test_error_to_failure () = + assert (Result.error_to_failure (Ok 3) = 3); + (match Result.error_to_failure (Error "ha") with + exception Failure "ha" [@warning "-52"] -> (); + | _ -> assert false); + () + let test_bind () = assert (Result.bind (Ok 3) (fun x -> Ok (succ x)) = Ok 4); assert (Result.bind (Ok 3) (fun x -> Error (strf "hu%d!" x)) = Error "hu3!"); @@ -42,6 +53,13 @@ let test_maps () = assert (Result.map_error succ (Ok 2) = Ok 2); () +let test_product () = + assert (Result.product (Ok "a") (Ok 3) = Ok ("a", 3)); + assert (Result.product (Ok "a") (Error "ha") = Error "ha"); + assert (Result.product (Error "hi") (Error "ha") = Error "hi"); + assert (Result.product (Error "hi") (Ok 3) = Error "hi"); + () + let test_fold () = assert (Result.fold ~ok:succ ~error:succ (Ok 1) = 2); assert (Result.fold ~ok:succ ~error:succ (Error 1) = 2); @@ -49,6 +67,11 @@ let test_fold () = assert (Result.(fold ~ok ~error) (Error "ha!") = (Error "ha!")); () +let test_retract () = + assert (Result.retract (Ok 3) = 3); + assert (Result.retract (Error 2) = 2); + () + let test_iters () = let count = ref 0 in let set_count x = count := x in @@ -110,19 +133,40 @@ let test_to_option_list_seq () = assert ((Result.to_seq (Error "ha!")) () = Seq.Nil); () +let test_syntax () = + let open Result.Syntax in + assert (Ok 5 = + let parse n = Ok n in + let* n0 = parse 3 in + let* n1 = parse 2 in + Ok (n0 + n1)); + assert (Ok 3 = + let+ one = Ok 1 + and+ two = Ok 2 in + one + two); + assert (Ok 1 = + let* three = Ok 3 in + let+ two = Ok 2 in + three - two); + () + let tests () = test_ok_error (); test_value (); test_get_ok_error (); + test_error_to_failure (); test_bind (); test_join (); test_maps (); + test_product (); test_fold (); + test_retract (); test_iters (); test_is_ok_error (); test_equal (); test_compare (); test_to_option_list_seq (); + test_syntax (); () let () = diff --git a/compiler/tests-ocaml/lib-seq/dune b/compiler/tests-ocaml/lib-seq/dune index a53598eb62..7c31dd5e56 100644 --- a/compiler/tests-ocaml/lib-seq/dune +++ b/compiler/tests-ocaml/lib-seq/dune @@ -1,6 +1,6 @@ (tests (names test) (build_if - (>= %{ocaml_version} 5.3)) + (>= %{ocaml_version} 5.5)) (libraries) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-seq/test.ml b/compiler/tests-ocaml/lib-seq/test.ml index 2936213c72..95bda086c3 100644 --- a/compiler/tests-ocaml/lib-seq/test.ml +++ b/compiler/tests-ocaml/lib-seq/test.ml @@ -20,6 +20,16 @@ let () = () ;; +(* filteri *) +let () = + assert + ([5;4] = + (List.to_seq [5;4;3;2;1;] + |> Seq.filteri (fun i _ -> i < 2) + |> List.of_seq)); + () +;; + (* unfold *) let () = let range first last = @@ -310,4 +320,14 @@ let () = assert (!!(Seq.(take 3 (map head matrix))) = [(0, 0); (0, 1); (0, 2)]); () +(* delay *) +let () = + let do_not_force_too_much = + Seq.cons + (Seq.return ()) + (Seq.delay @@ fun () -> Seq.return (assert false)) in + match Seq.concat do_not_force_too_much () with + | Seq.Nil -> assert false + | Seq.Cons ((), seq) -> ignore seq + let () = print_endline "OK";; diff --git a/compiler/tests-ocaml/lib-string/dune b/compiler/tests-ocaml/lib-string/dune index e3f41537b8..5bec17c293 100644 --- a/compiler/tests-ocaml/lib-string/dune +++ b/compiler/tests-ocaml/lib-string/dune @@ -1,6 +1,6 @@ (tests (names test_string binary) (build_if - (>= %{ocaml_version} 5)) + (>= %{ocaml_version} 5.5)) (libraries) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-string/test_string.ml b/compiler/tests-ocaml/lib-string/test_string.ml index 825a8d9296..f4870fe61a 100644 --- a/compiler/tests-ocaml/lib-string/test_string.ml +++ b/compiler/tests-ocaml/lib-string/test_string.ml @@ -49,9 +49,9 @@ let () = ;; (* GPR#805/815/833 *) -let () = - if Sys.word_size = 32 && Sys.backend_type = Native || Sys.backend_type = Bytecode - then begin + +let () = + if Sys.word_size = 32 && (Sys.backend_type = Native || Sys.backend_type = Bytecode) then begin let big = String.make Sys.max_string_length 'x' in let push x l = l := x :: !l in let (+=) a b = a := !a + b in @@ -63,15 +63,510 @@ let () = end let () = - assert(String.starts_with ~prefix:"foob" "foobarbaz"); - assert(String.starts_with ~prefix:"" "foobarbaz"); - assert(String.starts_with ~prefix:"" ""); - assert(not (String.starts_with ~prefix:"foobar" "bar")); - assert(not (String.starts_with ~prefix:"foo" "")); - assert(not (String.starts_with ~prefix:"fool" "foobar")); - assert(String.ends_with ~suffix:"baz" "foobarbaz"); - assert(String.ends_with ~suffix:"" "foobarbaz"); - assert(String.ends_with ~suffix:"" ""); - assert(not (String.ends_with ~suffix:"foobar" "bar")); - assert(not (String.ends_with ~suffix:"foo" "")); - assert(not (String.ends_with ~suffix:"obaz" "foobar")); + assert(String.starts_with ~prefix:"foob" "foobarbaz"); + assert(String.starts_with ~prefix:"" "foobarbaz"); + assert(String.starts_with ~prefix:"" ""); + assert(not (String.starts_with ~prefix:"foobar" "bar")); + assert(not (String.starts_with ~prefix:"foo" "")); + assert(not (String.starts_with ~prefix:"fool" "foobar")); + assert(String.ends_with ~suffix:"baz" "foobarbaz"); + assert(String.ends_with ~suffix:"" "foobarbaz"); + assert(String.ends_with ~suffix:"" ""); + assert(not (String.ends_with ~suffix:"foobar" "bar")); + assert(not (String.ends_with ~suffix:"foo" "")); + assert(not (String.ends_with ~suffix:"obaz" "foobar")); +;; + + +let () = + let test ?limit x y d = + assert (String.edit_distance ?limit x y = d); + assert (String.edit_distance ?limit y x = d); + assert (String.edit_distance ?limit x x = 0); + assert (String.edit_distance ?limit y y = 0); + in + test "" "" 0; + test "" "ab" 2; + test "function" "function" 0; + test "function" "fanction" 1; (* substitute *) + test "function" "fnction" 1; (* delete *) + test "function" "funiction" 1; (* insert *) + test "function" "funtcion" 1; (* transpose *) + test "function" "fantcion" 2; (* substitute + transpose *) + test "function" "fantcio" 3; (* substitute + transpose + delete *) + test "function" "efantcio" 4; (* all *) + test "fun" "function" 5; + test "fun" "function" ~limit:0 0; + test "fun" "function" ~limit:1 1; + test "fun" "function" ~limit:2 2; + test "fun" "function" ~limit:3 3; + test "fun" "function" ~limit:4 4; + test "fun" "function" ~limit:5 5; + test "fun" "function" ~limit:6 5; + test "ca" "abc" 3 (* Damerau-Levenshtein would be 2 *); + test "élément" "élment" 1; + test "OCaml🐫" "O'Caml🐪" 2; +;; + +let () = + let test ?max_dist dict s res = + let dict = fun yield -> List.iter yield dict in + assert (String.spellcheck ?max_dist dict s = res) + in + (* max_dist = 0 *) + test [""] "" [""]; + test ["a"; "b"] "" []; + test ["a"; "b"] "a" ["a"]; + test ["a"; "b"] "d" []; + test ["a"; "b"] "é" []; + test ["aa"; "aé"] "aé" ["aé"]; + test ["aa"; "aé"] "ad" []; + (* max_dist = 1 *) + test ["abc"; "abcé"] "abc" ["abc"]; + test ["abc"; "abcé"; "abcéd"] "abé" ["abc"; "abcé"]; + test ["abcdé"; "abcdéf"] "abcd" ["abcdé"]; + (* max_dist = 2 *) + test ["abcdéf"] "abcde" ["abcdéf"]; + test ["abcdéf"] "ubcde" []; + let max_dist s = if String.length s <= 1 then 1 else 2 in + test ~max_dist ["abc"] "a" []; + test ~max_dist ["abc"; "ab"; "b"] "a" ["ab"; "b"]; + () + +let () = + (* Some functions of the string module assume this holds *) + assert (Sys.max_string_length - 1 < max_int) + +let () = + (* Test splitting with magnitudes *) + (* String.take_first *) + assert (String.take_first (-1) "" = ""); + assert (String.take_first (-1) "a" = ""); + assert (String.take_first (-1) "ab" = ""); + assert (String.take_first 0 "" = ""); + assert (String.take_first 0 "a" = ""); + assert (String.take_first 0 "ab" = ""); + assert (String.take_first 1 "" = ""); + assert (String.take_first 1 "a" = "a"); + assert (String.take_first 1 "ab" = "a"); + assert (String.take_first 2 "" = ""); + assert (String.take_first 2 "a" = "a"); + assert (String.take_first 2 "ab" = "ab"); + (* String.take_last *) + assert (String.take_last (-1) "" = ""); + assert (String.take_last (-1) "a" = ""); + assert (String.take_last (-1) "ab" = ""); + assert (String.take_last 0 "" = ""); + assert (String.take_last 0 "a" = ""); + assert (String.take_last 0 "ab" = ""); + assert (String.take_last 1 "" = ""); + assert (String.take_last 1 "a" = "a"); + assert (String.take_last 1 "ab" = "b"); + assert (String.take_last 2 "" = ""); + assert (String.take_last 2 "a" = "a"); + assert (String.take_last 2 "ab" = "ab"); + (* String.drop_first *) + assert (String.drop_first (-1) "" = ""); + assert (String.drop_first (-1) "a" = "a"); + assert (String.drop_first (-1) "ab" = "ab"); + assert (String.drop_first 0 "" = ""); + assert (String.drop_first 0 "a" = "a"); + assert (String.drop_first 0 "ab" = "ab"); + assert (String.drop_first 1 "" = ""); + assert (String.drop_first 1 "a" = ""); + assert (String.drop_first 1 "ab" = "b"); + assert (String.drop_first 2 "" = ""); + assert (String.drop_first 2 "a" = ""); + assert (String.drop_first 2 "ab" = ""); + (* String.drop_last *) + assert (String.drop_last (-1) "" = ""); + assert (String.drop_last (-1) "a" = "a"); + assert (String.drop_last (-1) "ab" = "ab"); + assert (String.drop_last 0 "" = ""); + assert (String.drop_last 0 "a" = "a"); + assert (String.drop_last 0 "ab" = "ab"); + assert (String.drop_last 1 "" = ""); + assert (String.drop_last 1 "a" = "");; + assert (String.drop_last 1 "ab" = "a"); + assert (String.drop_last 2 "" = ""); + assert (String.drop_last 2 "a" = ""); + assert (String.drop_last 2 "ab" = ""); + (* String.cut_first *) + assert (String.cut_first (-1) "" = ("", "")); + assert (String.cut_first (-1) "a" = ("", "a")); + assert (String.cut_first (-1) "ab" = ("", "ab")); + assert (String.cut_first 0 "" = ("", "")); + assert (String.cut_first 0 "a" = ("", "a")); + assert (String.cut_first 0 "ab" = ("", "ab")); + assert (String.cut_first 1 "" = ("", "")); + assert (String.cut_first 1 "a" = ("a", "")); + assert (String.cut_first 1 "ab" = ("a", "b")); + assert (String.cut_first 2 "" = ("", "")); + assert (String.cut_first 2 "a" = ("a", "")); + assert (String.cut_first 2 "ab" = ("ab", "")); + (* String.cut_last *) + assert (String.cut_last (-1) "" = ("", "")); + assert (String.cut_last (-1) "a" = ("a", "")); + assert (String.cut_last (-1) "ab" = ("ab", "")); + assert (String.cut_last 0 "" = ("", "")); + assert (String.cut_last 0 "a" = ("a", "")); + assert (String.cut_last 0 "ab" = ("ab", "")); + assert (String.cut_last 1 "" = ("", "")); + assert (String.cut_last 1 "a" = ("", "a")); + assert (String.cut_last 1 "ab" = ("a", "b")); + assert (String.cut_last 2 "" = ("", "")); + assert (String.cut_last 2 "a" = ("", "a")); + assert (String.cut_last 2 "ab" = ("", "ab")); + () + +let () = + (* Test splitting with predicates *) + (* String.take_first_while *) + assert (String.take_first_while Char.Ascii.is_white "" = ""); + assert (String.take_first_while Char.Ascii.is_white " " = " "); + assert (String.take_first_while Char.Ascii.is_white "abc" = ""); + assert (String.take_first_while Char.Ascii.is_white " abc" = " "); + (* String.drop_first_while *) + assert (String.drop_first_while Char.Ascii.is_white "" = ""); + assert (String.drop_first_while Char.Ascii.is_white " " = ""); + assert (String.drop_first_while Char.Ascii.is_white "abc" = "abc"); + assert (String.drop_first_while Char.Ascii.is_white " abc" = "abc"); + (* String.cut_first_while *) + assert (String.cut_first_while Char.Ascii.is_white "" = ("", "")); + assert (String.cut_first_while Char.Ascii.is_white " " = (" ", "")); + assert (String.cut_first_while Char.Ascii.is_white "abc" = ("", "abc")); + assert (String.cut_first_while Char.Ascii.is_white " abc" = (" ", "abc")); + (* String.take_last_while *) + assert (String.take_last_while Char.Ascii.is_white "" = ""); + assert (String.take_last_while Char.Ascii.is_white " " = " "); + assert (String.take_last_while Char.Ascii.is_white "abc" = ""); + assert (String.take_last_while Char.Ascii.is_white "abc " = " "); + (* String.drop_last_while *) + assert (String.drop_last_while Char.Ascii.is_white "" = ""); + assert (String.drop_last_while Char.Ascii.is_white " " = ""); + assert (String.drop_last_while Char.Ascii.is_white "abc" = "abc"); + assert (String.drop_last_while Char.Ascii.is_white "abc " = "abc"); + (* String.cut_last_while *) + assert (String.cut_last_while Char.Ascii.is_white "" = ("", "")); + assert (String.cut_last_while Char.Ascii.is_white " " = ("", " ")); + assert (String.cut_last_while Char.Ascii.is_white "abc" = ("abc", "")); + assert (String.cut_last_while Char.Ascii.is_white "abc " = ("abc", " ")); + () + +let () = + (* Test String.of_char *) + assert (String.of_char 'a' = "a"); + assert (String.of_char '\x00' = "\x00"); + () + +let () = + (* Test String.is_empty *) + assert (String.is_empty "life" = false); + assert (String.is_empty "" = true); + () + +let () = + (* Test String.find_{first,last}_index *) + let is_letter = Char.Ascii.is_letter in + let is_invalid_arg f = match f () with + | exception Invalid_argument _ -> () | _ -> assert false + in + is_invalid_arg (fun () -> String.find_first_index ~start:(-1) is_letter ""); + is_invalid_arg (fun () -> String.find_last_index ~start:(-1) is_letter ""); + assert (String.find_first_index ~start:0 is_letter "" = None); + assert (String.find_last_index ~start:0 is_letter "" = None); + is_invalid_arg (fun () -> String.find_first_index ~start:1 is_letter ""); + is_invalid_arg (fun () -> String.find_last_index ~start:1 is_letter ""); + assert (String.find_first_index ~start:0 is_letter "-" = None); + assert (String.find_first_index ~start:1 is_letter "-" = None); + assert (String.find_last_index ~start:0 is_letter "-" = None); + assert (String.find_last_index ~start:1 is_letter "-" = None); + assert (String.find_first_index ~start:0 is_letter "a-" = Some 0); + assert (String.find_first_index ~start:1 is_letter "a-" = None); + assert (String.find_first_index ~start:2 is_letter "a-" = None); + assert (String.find_last_index ~start:0 is_letter "a-" = Some 0); + assert (String.find_last_index ~start:1 is_letter "a-" = Some 0); + assert (String.find_last_index ~start:2 is_letter "a-" = Some 0); + assert (String.find_first_index ~start:0 is_letter "a-a" = Some 0); + assert (String.find_first_index ~start:1 is_letter "a-a" = Some 2); + assert (String.find_first_index ~start:2 is_letter "a-a" = Some 2); + assert (String.find_first_index ~start:3 is_letter "a-a" = None); + assert (String.find_last_index ~start:0 is_letter "a-a" = Some 0); + assert (String.find_last_index ~start:1 is_letter "a-a" = Some 0); + assert (String.find_last_index ~start:2 is_letter "a-a" = Some 2); + assert (String.find_last_index ~start:3 is_letter "a-a" = Some 2); + assert (String.find_first_index ~start:0 is_letter "-a-" = Some 1); + assert (String.find_first_index ~start:1 is_letter "-a-" = Some 1); + assert (String.find_first_index ~start:2 is_letter "-a-" = None); + assert (String.find_first_index ~start:3 is_letter "-a-" = None); + assert (String.find_last_index ~start:0 is_letter "-a-" = None); + assert (String.find_last_index ~start:1 is_letter "-a-" = Some 1); + assert (String.find_last_index ~start:2 is_letter "-a-" = Some 1); + assert (String.find_last_index ~start:3 is_letter "-a-" = Some 1); + () + +let () = + (* Test String.find_first *) + let is_invalid_arg f = match f () with + | exception Invalid_argument _ -> () | _ -> assert false + in + is_invalid_arg (fun () -> String.find_first ~start:(-1) ~sub:"" ""); + assert (String.find_first ~start:0 ~sub:"" "" = Some 0); + is_invalid_arg (fun () -> String.find_first ~start:1 ~sub:"" ""); + assert (String.find_first ~start:0 ~sub:"" "ab" = Some 0); + assert (String.find_first ~start:1 ~sub:"" "ab" = Some 1); + assert (String.find_first ~start:2 ~sub:"" "ab" = Some 2); + is_invalid_arg (fun () -> String.find_first ~start:3 ~sub:"" "ab"); + assert (String.find_first ~start:0 ~sub:"a" "" = None); + assert (String.find_first ~start:0 ~sub:"a" "a" = Some 0); + assert (String.find_first ~start:1 ~sub:"a" "a" = None); + assert (String.find_first ~start:0 ~sub:"a" "ba" = Some 1); + assert (String.find_first ~start:1 ~sub:"a" "ba" = Some 1); + assert (String.find_first ~start:2 ~sub:"a" "ba" = None); + assert (String.find_first ~start:0 ~sub:"ab" "" = None); + assert (String.find_first ~start:0 ~sub:"ab" "ab" = Some 0); + assert (String.find_first ~start:0 ~sub:"ab" "aab" = Some 1); + assert (String.find_first ~start:1 ~sub:"ab" "aab" = Some 1); + assert (String.find_first ~start:2 ~sub:"ab" "aab" = None); + assert (String.find_first ~start:3 ~sub:"ab" "aab" = None); + is_invalid_arg (fun () -> String.find_first ~start:(-1) ~sub:"abaa" "aba"); + assert (String.find_first ~start:0 ~sub:"abaa" "aba" = None); + assert (String.find_first ~start:2 ~sub:"abaa" "aba" = None); + assert (String.find_first ~start:3 ~sub:"abaa" "aba" = None); + is_invalid_arg (fun () -> String.find_first ~start:4 ~sub:"abaa" "aba"); + assert (String.find_first ~start:0 ~sub:"aba" "ababa" = Some 0); + assert (String.find_first ~start:1 ~sub:"aba" "ababa" = Some 2); + assert (String.find_first ~start:2 ~sub:"aba" "ababa" = Some 2); + assert (String.find_first ~start:3 ~sub:"aba" "ababa" = None); + assert (String.find_first ~start:4 ~sub:"aba" "ababa" = None); + assert (String.find_first ~start:5 ~sub:"aba" "ababa" = None); + assert (String.find_first ~start:0 ~sub:"abab" "ababab" = Some 0); + assert (String.find_first ~start:1 ~sub:"abab" "ababab" = Some 2); + assert (String.find_first ~start:2 ~sub:"abab" "ababab" = Some 2); + assert (String.find_first ~start:3 ~sub:"abab" "ababab" = None); + assert (String.find_first ~start:4 ~sub:"abab" "ababab" = None); + assert (String.find_first ~start:5 ~sub:"abab" "ababab" = None); + assert (String.find_first ~start:6 ~sub:"abab" "ababab" = None); + assert (String.find_first ~start:0 ~sub:"aba" "xbabxbaba" = Some 6); + assert (String.find_first ~start:0 ~sub:"xxxxaz" "yyyyazxxxxxaz" = Some 7); + assert (String.find_first ~start:0 ~sub:"aaa" "abaacaaad" = Some 5); + () + +let () = + (* Test String.find_last *) + let is_invalid_arg f = match f () with + | exception Invalid_argument _ -> () | _ -> assert false + in + is_invalid_arg (fun () -> String.find_last ~start:(-1) ~sub:"" ""); + assert (String.find_last ~start:0 ~sub:"" "" = Some 0); + is_invalid_arg (fun () -> String.find_last ~start:1 ~sub:"" ""); + assert (String.find_last ~start:0 ~sub:"" "ab" = Some 0); + assert (String.find_last ~start:1 ~sub:"" "ab" = Some 1); + assert (String.find_last ~start:2 ~sub:"" "ab" = Some 2); + is_invalid_arg (fun () -> String.find_last ~start:3 ~sub:"" "ab"); + assert (String.find_last ~start:0 ~sub:"a" "" = None); + assert (String.find_last ~start:0 ~sub:"a" "a" = Some 0); + assert (String.find_last ~start:1 ~sub:"a" "a" = Some 0); + assert (String.find_last ~start:0 ~sub:"a" "ba" = None); + assert (String.find_last ~start:1 ~sub:"a" "ba" = Some 1); + assert (String.find_last ~start:2 ~sub:"a" "ba" = Some 1); + assert (String.find_last ~start:0 ~sub:"ab" "" = None); + assert (String.find_last ~start:0 ~sub:"ab" "ab" = Some 0); + assert (String.find_last ~start:0 ~sub:"ab" "aab" = None); + assert (String.find_last ~start:1 ~sub:"ab" "aab" = Some 1); + assert (String.find_last ~start:2 ~sub:"ab" "aab" = Some 1); + assert (String.find_last ~start:3 ~sub:"ab" "aab" = Some 1); + is_invalid_arg (fun () -> String.find_last ~start:(-1) ~sub:"abaa" "aba"); + assert (String.find_last ~start:0 ~sub:"abaa" "aba" = None); + assert (String.find_last ~start:2 ~sub:"abaa" "aba" = None); + assert (String.find_last ~start:3 ~sub:"abaa" "aba" = None); + is_invalid_arg (fun () -> String.find_last ~start:4 ~sub:"abaa" "aba"); + assert (String.find_last ~start:0 ~sub:"aba" "ababa" = Some 0); + assert (String.find_last ~start:1 ~sub:"aba" "ababa" = Some 0); + assert (String.find_last ~start:2 ~sub:"aba" "ababa" = Some 2); + assert (String.find_last ~start:3 ~sub:"aba" "ababa" = Some 2); + assert (String.find_last ~start:4 ~sub:"aba" "ababa" = Some 2); + assert (String.find_last ~start:5 ~sub:"aba" "ababa" = Some 2); + assert (String.find_last ~start:0 ~sub:"abab" "ababab" = Some 0); + assert (String.find_last ~start:1 ~sub:"abab" "ababab" = Some 0); + assert (String.find_last ~start:2 ~sub:"abab" "ababab" = Some 2); + assert (String.find_last ~start:3 ~sub:"abab" "ababab" = Some 2); + assert (String.find_last ~start:4 ~sub:"abab" "ababab" = Some 2); + assert (String.find_last ~start:5 ~sub:"abab" "ababab" = Some 2); + assert (String.find_last ~start:6 ~sub:"abab" "ababab" = Some 2); + assert (String.find_last ~sub:"ab" "aabb" = Some 1); + () + +let () = + (* Test String.includes *) + assert (String.includes ~affix:"" "" = true); + assert (String.includes ~affix:"" "a" = true); + assert (String.includes ~affix:"" "ab" = true); + assert (String.includes ~affix:"a" "" = false); + assert (String.includes ~affix:"a" "a" = true); + assert (String.includes ~affix:"a" "ab" = true); + assert (String.includes ~affix:"a" "ba" = true); + assert (String.includes ~affix:"a" "bab" = true); + assert (String.includes ~affix:"ab" "" = false); + assert (String.includes ~affix:"ab" "a" = false); + assert (String.includes ~affix:"ab" "ab" = true); + assert (String.includes ~affix:"ab" "aab" = true); + assert (String.includes ~affix:"aab" "ab" = false); + assert (String.includes ~affix:"ab" "aba" = true); + assert (String.includes ~affix:"ab" "aaba" = true); + assert (String.includes ~affix:"abab" "aababa" = true); + () + +let () = + (* Test String.replace_first *) + assert (String.replace_first ~sub:"" ~by:"" "" = ""); + assert (String.replace_first ~sub:"" ~by:"a" "" = "a"); + assert (String.replace_first ~sub:"" ~by:"a" "123" = "a123"); + assert (String.replace_first ~start:1 ~sub:"" ~by:"a" "123" = "1a23"); + assert (String.replace_first ~start:2 ~sub:"" ~by:"a" "123" = "12a3"); + assert (String.replace_first ~start:3 ~sub:"" ~by:"a" "123" = "123a"); + assert (String.replace_first ~sub:"1" ~by:"" "123" = "23"); + assert (String.replace_first ~sub:"3" ~by:"" "123" = "12"); + assert (String.replace_first ~sub:"1" ~by:"" "1" = ""); + assert (String.replace_first ~sub:"12" ~by:"z" "123" = "z3"); + assert (String.replace_first ~start:2 ~sub:"" ~by:"z" "123" = "12z3"); + assert (String.replace_first ~start:3 ~sub:"" ~by:"z" "123" = "123z"); + assert (String.replace_first ~start:3 ~sub:"a" ~by:"z" "123" = "123"); + assert (String.replace_first ~sub:"aba" ~by:"1" "ababa" = "1ba"); + assert (String.replace_first ~sub:"aba" ~by:"12" "ababa" = "12ba"); + () + +let () = + (* Test String.replace_last *) + assert (String.replace_last ~sub:"" ~by:"" "" = ""); + assert (String.replace_last ~sub:"" ~by:"a" "" = "a"); + assert (String.replace_last ~sub:"" ~by:"a" "123" = "123a"); + assert (String.replace_last ~start:1 ~sub:"" ~by:"a" "123" = "1a23"); + assert (String.replace_last ~start:2 ~sub:"" ~by:"a" "123" = "12a3"); + assert (String.replace_last ~start:3 ~sub:"" ~by:"a" "123" = "123a"); + assert (String.replace_last ~sub:"1" ~by:"" "123" = "23"); + assert (String.replace_last ~sub:"3" ~by:"" "123" = "12"); + assert (String.replace_last ~sub:"1" ~by:"" "1" = ""); + assert (String.replace_last ~sub:"12" ~by:"z" "123" = "z3"); + assert (String.replace_last ~start:2 ~sub:"" ~by:"z" "123" = "12z3"); + assert (String.replace_last ~start:3 ~sub:"" ~by:"z" "123" = "123z"); + assert (String.replace_last ~start:3 ~sub:"a" ~by:"z" "123" = "123"); + assert (String.replace_last ~sub:"aba" ~by:"1" "ababa" = "ab1"); + assert (String.replace_last ~sub:"aba" ~by:"12" "ababa" = "ab12"); + () + +let () = + (* Test String.replace_all *) + assert (String.replace_all ~sub:"" ~by:"" "" = ""); + assert (String.replace_all ~sub:"" ~by:"" "1" = "1"); + assert (String.replace_all ~sub:"" ~by:"" "12" = "12"); + assert (String.replace_all ~sub:"" ~by:"a" "" = "a"); + assert (String.replace_all ~sub:"" ~by:"a" "1" = "a1a"); + assert (String.replace_all ~sub:"" ~by:"a" "12" = "a1a2a"); + assert (String.replace_all ~sub:"" ~by:"a" "123" = "a1a2a3a"); + assert (String.replace_all ~start:0 ~sub:"" ~by:"a" "123" = "a1a2a3a"); + assert (String.replace_all ~start:1 ~sub:"" ~by:"a" "123" = "1a2a3a"); + assert (String.replace_all ~start:2 ~sub:"" ~by:"a" "123" = "12a3a"); + assert (String.replace_all ~start:3 ~sub:"" ~by:"a" "123" = "123a"); + assert (String.replace_all ~sub:"1" ~by:"" "121" = "2"); + assert (String.replace_all ~sub:"1" ~by:"3" "121" = "323"); + assert (String.replace_all ~sub:"1" ~by:"" "1" = ""); + assert (String.replace_all ~sub:"12" ~by:"a" "123" = "a3"); + assert (String.replace_all ~sub:"12" ~by:"a" "123112" = "a31a"); + assert (String.replace_all ~start:1 ~sub:"12" ~by:"a" "123112" = "1231a"); + assert (String.replace_all ~sub:"12" ~by:"ab" "123112" = "ab31ab"); + () + +let () = + (* Test String.split_first *) + assert (String.split_first ~sep:"" "" = Some ("", "")); + assert (String.split_first ~sep:"" "a" = Some ("", "a")); + assert (String.split_first ~sep:"" "ab" = Some ("", "ab")); + assert (String.split_first ~sep:"a" "" = None); + assert (String.split_first ~sep:"a" "b" = None); + assert (String.split_first ~sep:"a" "ab" = Some ("", "b")); + assert (String.split_first ~sep:"a" "ba" = Some ("b", "")); + assert (String.split_first ~sep:"ab" "" = None); + assert (String.split_first ~sep:"ab" "a" = None); + assert (String.split_first ~sep:"ab" "b" = None); + assert (String.split_first ~sep:"ab" "ab" = Some ("", "")); + assert (String.split_first ~sep:"ab" "aab" = Some ("a", "")); + assert (String.split_first ~sep:"ab" "aba" = Some ("", "a")); + assert (String.split_first ~sep:"ab" "abab" = Some ("", "ab")); + assert (String.split_first ~sep:"ab" "aabb" = Some ("a", "b")); + () + +let () = + (* Test String.split_last *) + assert (String.split_last ~sep:"" "" = Some ("", "")); + assert (String.split_last ~sep:"" "a" = Some ("a", "")); + assert (String.split_last ~sep:"" "ab" = Some ("ab", "")); + assert (String.split_last ~sep:"a" "" = None); + assert (String.split_last ~sep:"a" "b" = None); + assert (String.split_last ~sep:"a" "ab" = Some ("", "b")); + assert (String.split_last ~sep:"a" "ba" = Some ("b", "")); + assert (String.split_last ~sep:"ab" "" = None); + assert (String.split_last ~sep:"ab" "a" = None); + assert (String.split_last ~sep:"ab" "b" = None); + assert (String.split_last ~sep:"ab" "ab" = Some ("", "")); + assert (String.split_last ~sep:"ab" "aab" = Some ("a", "")); + assert (String.split_last ~sep:"ab" "aba" = Some ("", "a")); + assert (String.split_last ~sep:"ab" "abab" = Some ("ab", "")); + assert (String.split_last ~sep:"ab" "aabb" = Some ("a", "b")); + () + +let () = + (* Test String.split_all *) + assert (String.split_all ~sep:"" "" = [""; ""]); + assert (String.split_all ~sep:"" "a" = [""; "a"; ""]); + assert (String.split_all ~sep:"" "ab" = [""; "a"; "b"; ""]); + assert (String.split_all ~sep:"" "abc" = [""; "a"; "b"; "c"; ""]); + assert (String.split_all ~sep:"a" "" = [""]); + assert (String.split_all ~sep:"a" "a" = ["";""]); + assert (String.split_all ~sep:"a" "ab" = [""; "b"]); + assert (String.split_all ~sep:"a" "ba" = ["b"; ""]); + assert (String.split_all ~sep:"a" "abc" = [""; "bc"]); + assert (String.split_all ~sep:"a" "aba" = [""; "b"; ""]); + assert (String.split_all ~sep:"a" "bab" = ["b"; "b"]); + assert (String.split_all ~sep:"a" "babbab" = ["b"; "bb"; "b"]); + assert (String.split_all ~sep:"ab" "" = [""]); + assert (String.split_all ~sep:"ab" "a" = ["a"]); + assert (String.split_all ~sep:"ab" "b" = ["b"]); + assert (String.split_all ~sep:"ab" "ab" = [""; ""]); + assert (String.split_all ~sep:"ab" "aab" = ["a"; ""]); + assert (String.split_all ~sep:"ab" "aba" = [""; "a"]); + assert (String.split_all ~sep:"ab" "abab" = [""; ""; ""]); + assert (String.split_all ~sep:"ab" "aabb" = ["a"; "b"]); + assert (String.split_all ~sep:"ab" "aaabbb" = ["aa"; "bb"]); + assert (String.split_all ~sep:"aba" "ababa" = [""; "ba"]); + assert (String.split_all ~sep:"a" "abaa" = [""; "b"; ""; ""]); + assert (String.split_all ~drop:(( = ) "") ~sep:"a" "abaa" = ["b"]); + () + +let () = + (* Test String.rsplit_all *) + assert (String.rsplit_all ~sep:"" "" = [""; ""]); + assert (String.rsplit_all ~sep:"" "a" = [""; "a"; ""]); + assert (String.rsplit_all ~sep:"" "ab" = [""; "a"; "b"; ""]); + assert (String.rsplit_all ~sep:"" "abc" = [""; "a"; "b"; "c"; ""]); + assert (String.rsplit_all ~sep:"a" "" = [""]); + assert (String.rsplit_all ~sep:"a" "a" = ["";""]); + assert (String.rsplit_all ~sep:"a" "ab" = [""; "b"]); + assert (String.rsplit_all ~sep:"a" "ba" = ["b"; ""]); + assert (String.rsplit_all ~sep:"a" "abc" = [""; "bc"]); + assert (String.rsplit_all ~sep:"a" "aba" = [""; "b"; ""]); + assert (String.rsplit_all ~sep:"a" "bab" = ["b"; "b"]); + assert (String.rsplit_all ~sep:"a" "babbab" = ["b"; "bb"; "b"]); + assert (String.rsplit_all ~sep:"ab" "" = [""]); + assert (String.rsplit_all ~sep:"ab" "a" = ["a"]); + assert (String.rsplit_all ~sep:"ab" "b" = ["b"]); + assert (String.rsplit_all ~sep:"ab" "ab" = [""; ""]); + assert (String.rsplit_all ~sep:"ab" "aab" = ["a"; ""]); + assert (String.rsplit_all ~sep:"ab" "aba" = [""; "a"]); + assert (String.rsplit_all ~sep:"ab" "abab" = [""; ""; ""]); + assert (String.rsplit_all ~sep:"ab" "aabb" = ["a"; "b"]); + assert (String.rsplit_all ~sep:"ab" "aaabbb" = ["aa"; "bb"]); + assert (String.rsplit_all ~sep:"aba" "ababa" = ["ab"; ""]); + assert (String.rsplit_all ~sep:"a" "abaa" = [""; "b"; ""; ""]); + assert (String.rsplit_all ~drop:(( = ) "") ~sep:"a" "abaa" = ["b"]); + () diff --git a/compiler/tests-ocaml/lib-uchar/dune b/compiler/tests-ocaml/lib-uchar/dune index f153036e8a..a1c3e89d09 100644 --- a/compiler/tests-ocaml/lib-uchar/dune +++ b/compiler/tests-ocaml/lib-uchar/dune @@ -1,6 +1,6 @@ (tests (build_if - (>= %{ocaml_version} 5.3)) + (>= %{ocaml_version} 5.5)) (names test) (libraries) (modes js wasm)) diff --git a/compiler/tests-ocaml/lib-uchar/test.ml b/compiler/tests-ocaml/lib-uchar/test.ml index 134fdf0023..7663295c00 100644 --- a/compiler/tests-ocaml/lib-uchar/test.ml +++ b/compiler/tests-ocaml/lib-uchar/test.ml @@ -94,6 +94,15 @@ let test_utf_decode () = assert (Uchar.equal (Uchar.utf_decode_uchar invalid) Uchar.rep); () +let test_utf_8_decode_length_of_byte () = + assert (Uchar.utf_8_decode_length_of_byte "a".[0] = 1); + assert (Uchar.utf_8_decode_length_of_byte "é".[0] = 2); + assert (Uchar.utf_8_decode_length_of_byte "‘".[0] = 3); + assert (Uchar.utf_8_decode_length_of_byte "🐫".[0] = + Uchar.max_utf_8_decode_length); + assert (Uchar.utf_8_decode_length_of_byte "\xFF".[0] = 0); + () + let test_utf_x_byte_length () = assert (Uchar.utf_8_byte_length Uchar.min = 1); assert (Uchar.utf_16_byte_length Uchar.min = 2); @@ -119,6 +128,7 @@ let tests () = test_compare (); test_hash (); test_utf_decode (); + test_utf_8_decode_length_of_byte (); test_utf_x_byte_length (); () diff --git a/tools/sync_testsuite.ml b/tools/sync_testsuite.ml index 663c4f736f..e8ba500ca0 100644 --- a/tools/sync_testsuite.ml +++ b/tools/sync_testsuite.ml @@ -106,7 +106,6 @@ let _ignore_ x = | "utils" (* not relevant *) | "warnings" (* not relevant *) | "weak-ephe-final" (* ?? *) - | "win-unicode" (* not relevant *) | "lf_skiplist" (* not relevant *) | "lib-bigarray-2" -> `Ignore | "lib-digest/blake2b_self_test.ml" -> `Ignore