// This program was compiled from OCaml by js_of_ocaml 1.0 function caml_raise_with_arg (tag, arg) { throw [0, tag, arg]; } function caml_raise_with_string (tag, msg) { caml_raise_with_arg (tag, new MlWrappedString (msg)); } function caml_invalid_argument (msg) { caml_raise_with_string(caml_global_data[4], msg); } function caml_array_bound_error () { caml_invalid_argument("index out of bounds"); } function caml_str_repeat(n, s) { if (!n) { return ""; } if (n & 1) { return caml_str_repeat(n - 1, s) + s; } var r = caml_str_repeat(n >> 1, s); return r + r; } function MlString(param) { if (param != null) { this.bytes = this.fullBytes = param; this.last = this.len = param.length; } } MlString.prototype = { string:null, bytes:null, fullBytes:null, array:null, len:null, last:0, toJsString:function() { return this.string = decodeURIComponent (escape(this.getFullBytes())); }, toBytes:function() { if (this.string != null) var b = unescape (encodeURIComponent (this.string)); else { var b = "", a = this.array, l = a.length; for (var i = 0; i < l; i ++) b += String.fromCharCode (a[i]); } this.bytes = this.fullBytes = b; this.last = this.len = b.length; return b; }, getBytes:function() { var b = this.bytes; if (b == null) b = this.toBytes(); return b; }, getFullBytes:function() { var b = this.fullBytes; if (b !== null) return b; b = this.bytes; if (b == null) b = this.toBytes (); if (this.last < this.len) { this.bytes = (b += caml_str_repeat(this.len - this.last, '\0')); this.last = this.len; } this.fullBytes = b; return b; }, toArray:function() { var b = this.bytes; if (b == null) b = this.toBytes (); var a = [], l = this.last; for (var i = 0; i < l; i++) a[i] = b.charCodeAt(i); for (l = this.len; i < l; i++) a[i] = 0; this.string = this.bytes = this.fullBytes = null; this.last = this.len; this.array = a; return a; }, getArray:function() { var a = this.array; if (!a) a = this.toArray(); return a; }, getLen:function() { var len = this.len; if (len !== null) return len; this.toBytes(); return this.len; }, toString:function() { var s = this.string; return s?s:this.toJsString(); }, valueOf:function() { var s = this.string; return s?s:this.toJsString(); }, blitToArray:function(i1, a2, i2, l) { var a1 = this.array; if (a1) for (var i = 0; i < l; i++) a2 [i2 + i] = a1 [i1 + i]; else { var b = this.bytes; if (b == null) b = this.toBytes(); var l1 = this.last - i1; if (l <= l1) for (var i = 0; i < l; i++) a2 [i2 + i] = b.charCodeAt(i1 + i); else { for (var i = 0; i < l1; i++) a2 [i2 + i] = b.charCodeAt(i1 + i); for (; i < l; i++) a2 [i2 + i] = 0; } } }, get:function (i) { var a = this.array; if (a) return a[i]; var b = this.bytes; if (b == null) b = this.toBytes(); return (i<this.last)?b.charCodeAt(i):0; }, safeGet:function (i) { if (!this.len) this.toBytes(); if ((i < 0) || (i >= this.len)) caml_array_bound_error (); return this.get(i); }, set:function (i, c) { var a = this.array; if (!a) { if (this.last == i) { this.bytes += String.fromCharCode (c & 0xff); this.last ++; return 0; } a = this.toArray(); } else if (this.bytes != null) { this.bytes = this.fullBytes = this.string = null; } a[i] = c & 0xff; return 0; }, safeSet:function (i, c) { if (this.len == null) this.toBytes (); if ((i < 0) || (i >= this.len)) caml_array_bound_error (); this.set(i, c); }, fill:function (ofs, len, c) { if (ofs >= this.last && this.last && c == 0) return; var a = this.array; if (!a) a = this.toArray(); else if (this.bytes != null) { this.bytes = this.fullBytes = this.string = null; } var l = ofs + len; for (var i = ofs; i < l; i++) a[i] = c; }, compare:function (s2) { if (this.string != null && s2.string != null) { if (this.string < s2.string) return -1; if (this.string > s2.string) return 1; return 0; } var b1 = this.getFullBytes (); var b2 = s2.getFullBytes (); if (b1 < b2) return -1; if (b1 > b2) return 1; return 0; }, equal:function (s2) { if (this.string != null && s2.string != null) return this.string == s2.string; return this.getFullBytes () == s2.getFullBytes (); }, lessThan:function (s2) { if (this.string != null && s2.string != null) return this.string < s2.string; return this.getFullBytes () < s2.getFullBytes (); }, lessEqual:function (s2) { if (this.string != null && s2.string != null) return this.string <= s2.string; return this.getFullBytes () <= s2.getFullBytes (); } } function MlWrappedString (s) { this.string = s; } MlWrappedString.prototype = new MlString(); function MlMakeString (l) { this.bytes = ""; this.len = l; } MlMakeString.prototype = new MlString (); function caml_array_get (array, index) { if ((index < 0) || (index >= array.length - 1)) caml_array_bound_error(); return array[index+1]; } function caml_array_set (array, index, newval) { if ((index < 0) || (index >= array.length - 1)) caml_array_bound_error(); array[index+1]=newval; return 0; } function caml_blit_string(s1, i1, s2, i2, len) { if (len === 0) return; if (i2 === s2.last && s2.bytes != null) { var b = s1.bytes; if (b == null) b = s1.toBytes (); if (i1 > 0 || s1.last > len) b = b.slice(i1, i1 + len); s2.bytes += b; s2.last += b.length; return; } var a = s2.array; if (!a) a = s2.toArray(); else { s2.bytes = s2.string = null; } s1.blitToArray (i1, a, i2, len); } function caml_call_gen(f, args) { if(f.fun) return caml_call_gen(f.fun, args); var n = f.length; var d = n - args.length; if (d == 0) return f.apply(null, args); else if (d < 0) return caml_call_gen(f.apply(null, args.slice(0,n)), args.slice(n)); else return function (x){ return caml_call_gen(f, args.concat([x])); }; } function caml_classify_float (x) { if (isFinite (x)) { if (Math.abs(x) >= 2.2250738585072014e-308) return 0; if (x != 0) return 1; return 2; } return isNaN(x)?4:3; } function caml_create_string(len) { if (len < 0) caml_invalid_argument("String.create"); return new MlMakeString(len); } function caml_int64_compare(x,y) { var x3 = x[3] << 16; var y3 = y[3] << 16; if (x3 > y3) return 1; if (x3 < y3) return -1; if (x[2] > y[2]) return 1; if (x[2] < y[2]) return -1; if (x[1] > y[1]) return 1; if (x[1] < y[1]) return -1; return 0; } function caml_int_compare (a, b) { if (a < b) return (-1); if (a == b) return 0; return 1; } function caml_compare_val (a, b, total) { var stack = []; for(;;) { if (!(total && a === b)) { if (a instanceof MlString) { if (b instanceof MlString) { if (a != b) { var x = a.compare(b); if (x != 0) return x; } } else return 1; } else if (a instanceof Array && a[0] === (a[0]|0)) { var ta = a[0]; if (ta === 250) { a = a[1]; continue; } else if (b instanceof Array && b[0] === (b[0]|0)) { var tb = b[0]; if (tb === 250) { b = b[1]; continue; } else if (ta != tb) { return (ta < tb)?-1:1; } else { switch (ta) { case 248: { var x = caml_int_compare(a[2], b[2]); if (x != 0) return x; break; } case 255: { var x = caml_int64_compare(a, b); if (x != 0) return x; break; } default: if (a.length != b.length) return (a.length < b.length)?-1:1; if (a.length > 1) stack.push(a, b, 1); } } } else return 1; } else if (b instanceof MlString || (b instanceof Array && b[0] === (b[0]|0))) { return -1; } else { if (a < b) return -1; if (a > b) return 1; if (total && a != b) { if (a == a) return 1; if (b == b) return -1; } } } if (stack.length == 0) return 0; var i = stack.pop(); b = stack.pop(); a = stack.pop(); if (i + 1 < a.length) stack.push(a, b, i + 1); a = a[i]; b = b[i]; } } function caml_equal (x, y) { return +(caml_compare_val(x,y,false) == 0); } function caml_fill_string(s, i, l, c) { s.fill (i, l, c); } var caml_global_data = [0]; function caml_failwith (msg) { caml_raise_with_string(caml_global_data[3], msg); } function caml_float_of_string(s) { var res; s = s.getFullBytes(); res = +s; if ((s.length > 0) && (res === res)) return res; s = s.replace(/_/g,""); res = +s; if (((s.length > 0) && (res === res)) || /^[+-]?nan$/i.test(s)) return res; caml_failwith("float_of_string"); } function caml_parse_format (fmt) { fmt = fmt.toString (); var len = fmt.length; if (len > 31) caml_invalid_argument("format_int: format too long"); var f = { justify:'+', signstyle:'-', filler:' ', alternate:false, base:0, signedconv:false, width:0, uppercase:false, sign:1, prec:-1, conv:'f' }; for (var i = 0; i < len; i++) { var c = fmt.charAt(i); switch (c) { case '-': f.justify = '-'; break; case '+': case ' ': f.signstyle = c; break; case '0': f.filler = '0'; break; case '#': f.alternate = true; break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': f.width = 0; while (c=fmt.charCodeAt(i) - 48, c >= 0 && c <= 9) { f.width = f.width * 10 + c; i++ } i--; break; case '.': f.prec = 0; i++; while (c=fmt.charCodeAt(i) - 48, c >= 0 && c <= 9) { f.prec = f.prec * 10 + c; i++ } i--; case 'd': case 'i': f.signedconv = true; /* fallthrough */ case 'u': f.base = 10; break; case 'x': f.base = 16; break; case 'X': f.base = 16; f.uppercase = true; break; case 'o': f.base = 8; break; case 'e': case 'f': case 'g': f.signedconv = true; f.conv = c; break; case 'E': case 'F': case 'G': f.signedconv = true; f.uppercase = true; f.conv = c.toLowerCase (); break; } } return f; } function caml_finish_formatting(f, rawbuffer) { if (f.uppercase) rawbuffer = rawbuffer.toUpperCase(); var len = rawbuffer.length; if (f.signedconv && (f.sign < 0 || f.signstyle != '-')) len++; if (f.alternate) { if (f.base == 8) len += 1; if (f.base == 16) len += 2; } var buffer = ""; if (f.justify == '+' && f.filler == ' ') for (var i = len; i < f.width; i++) buffer += ' '; if (f.signedconv) { if (f.sign < 0) buffer += '-'; else if (f.signstyle != '-') buffer += f.signstyle; } if (f.alternate && f.base == 8) buffer += '0'; if (f.alternate && f.base == 16) buffer += "0x"; if (f.justify == '+' && f.filler == '0') for (var i = len; i < f.width; i++) buffer += '0'; buffer += rawbuffer; if (f.justify == '-') for (var i = len; i < f.width; i++) buffer += ' '; return new MlWrappedString (buffer); } function caml_format_float (fmt, x) { var s, f = caml_parse_format(fmt); var prec = (f.prec < 0)?6:f.prec; if (x < 0) { f.sign = -1; x = -x; } if (isNaN(x)) { s = "nan"; f.filler = ' '; } else if (!isFinite(x)) { s = "inf"; f.filler = ' '; } else switch (f.conv) { case 'e': var s = x.toExponential(prec); var i = s.length; if (s.charAt(i - 3) == 'e') s = s.slice (0, i - 1) + '0' + s.slice (i - 1); break; case 'f': s = x.toFixed(prec); break; case 'g': prec = prec?prec:1; s = x.toExponential(prec - 1); var j = s.indexOf('e'); var exp = +s.slice(j + 1); if (exp < -4 || x.toFixed(0).length > prec) { var i = j - 1; while (s.charAt(i) == '0') i--; if (s.charAt(i) == '.') i--; s = s.slice(0, i + 1) + s.slice(j); i = s.length; if (s.charAt(i - 3) == 'e') s = s.slice (0, i - 1) + '0' + s.slice (i - 1); break; } else { var p = prec; if (exp < 0) { p -= exp + 1; s = x.toFixed(p); } else while (s = x.toFixed(p), s.length > prec + 1) p--; if (p) { var i = s.length - 1; while (s.charAt(i) == '0') i--; if (s.charAt(i) == '.') i--; s = s.slice(0, i + 1); } } break; } return caml_finish_formatting(f, s); } function caml_format_int(fmt, i) { if (fmt.toString() == "%d") return new MlWrappedString(""+i); var f = caml_parse_format(fmt); if (i < 0) { if (f.signedconv) { f.sign = -1; i = -i; } else i >>>= 0; } var s = i.toString(f.base); if (f.prec >= 0) { f.filler = ' '; var n = f.prec - s.length; if (n > 0) s = caml_str_repeat (n, '0') + s; } return caml_finish_formatting(f, s); } function caml_get_exception_backtrace () { caml_invalid_argument ("Primitive 'caml_get_exception_backtrace' not implemented"); } function caml_int64_is_negative(x) { return (x[3] << 16) < 0; } function caml_int64_neg (x) { var y1 = - x[1]; var y2 = - x[2] + (y1 >> 24); var y3 = - x[3] + (y2 >> 24); return [255, y1 & 0xffffff, y2 & 0xffffff, y3 & 0xffff]; } function caml_int64_of_int32 (x) { return [255, x & 0xffffff, (x >> 24) & 0xffffff, (x >> 31) & 0xffff] } function caml_int64_ucompare(x,y) { if (x[3] > y[3]) return 1; if (x[3] < y[3]) return -1; if (x[2] > y[2]) return 1; if (x[2] < y[2]) return -1; if (x[1] > y[1]) return 1; if (x[1] < y[1]) return -1; return 0; } function caml_int64_lsl1 (x) { x[3] = (x[3] << 1) | (x[2] >> 23); x[2] = ((x[2] << 1) | (x[1] >> 23)) & 0xffffff; x[1] = (x[1] << 1) & 0xffffff; } function caml_int64_lsr1 (x) { x[1] = ((x[1] >>> 1) | (x[2] << 23)) & 0xffffff; x[2] = ((x[2] >>> 1) | (x[3] << 23)) & 0xffffff; x[3] = x[3] >>> 1; } function caml_int64_sub (x, y) { var z1 = x[1] - y[1]; var z2 = x[2] - y[2] + (z1 >> 24); var z3 = x[3] - y[3] + (z2 >> 24); return [255, z1 & 0xffffff, z2 & 0xffffff, z3 & 0xffff]; } function caml_int64_udivmod (x, y) { var offset = 0; var modulus = x.slice (); var divisor = y.slice (); var quotient = [255, 0, 0, 0]; while (caml_int64_ucompare (modulus, divisor) > 0) { offset++; caml_int64_lsl1 (divisor); } while (offset >= 0) { offset --; caml_int64_lsl1 (quotient); if (caml_int64_ucompare (modulus, divisor) >= 0) { quotient[1] ++; modulus = caml_int64_sub (modulus, divisor); } caml_int64_lsr1 (divisor); } return [0,quotient, modulus]; } function caml_int64_to_int32 (x) { return x[1] | (x[2] << 24); } function caml_int64_is_zero(x) { return (x[3]|x[2]|x[1]) == 0; } function caml_int64_format (fmt, x) { var f = caml_parse_format(fmt); if (f.signedconv && caml_int64_is_negative(x)) { f.sign = -1; x = caml_int64_neg(x); } var buffer = ""; var wbase = caml_int64_of_int32(f.base); var cvtbl = "0123456789abcdef"; do { var p = caml_int64_udivmod(x, wbase); x = p[1]; buffer = cvtbl.charAt(caml_int64_to_int32(p[2])) + buffer; } while (! caml_int64_is_zero(x)); if (f.prec >= 0) { f.filler = ' '; var n = f.prec - buffer.length; if (n > 0) buffer = caml_str_repeat (n, '0') + buffer; } return caml_finish_formatting(f, buffer); } function caml_parse_sign_and_base (s) { var i = 0, base = 10, sign = s.get(0) == 45?(i++,-1):1; if (s.get(i) == 48) switch (s.get(i + 1)) { case 120: case 88: base = 16; i += 2; break; case 111: case 79: base = 8; i += 2; break; case 98: case 66: base = 2; i += 2; break; } return [i, sign, base]; } function caml_parse_digit(c) { if (c >= 48 && c <= 57) return c - 48; if (c >= 65 && c <= 90) return c - 55; if (c >= 97 && c <= 122) return c - 87; return -1; } function caml_int_of_string (s) { var r = caml_parse_sign_and_base (s); var i = r[0], sign = r[1], base = r[2]; var threshold = -1 >>> 0; var c = s.get(i); var d = caml_parse_digit(c); if (d < 0 || d >= base) caml_failwith("int_of_string"); var res = d; for (;;) { i++; c = s.get(i); if (c == 95) continue; d = caml_parse_digit(c); if (d < 0 || d >= base) break; res = base * res + d; if (res > threshold) caml_failwith("int_of_string"); } if (i != s.getLen()) caml_failwith("int_of_string"); res = sign * res; if ((res | 0) != res) caml_failwith("int_of_string"); return res; } function caml_is_printable(c) { return +(c > 31 && c < 127); } function caml_js_from_byte_string (s) {return s.getFullBytes();} function caml_js_get_console () { var c = window.console?window.console:{}; var m = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "trace", "group", "groupCollapsed", "groupEnd", "time", "timeEnd"]; function f () {} for (var i = 0; i < m.length; i++) if (!c[m[i]]) c[m[i]]=f; return c; } function caml_js_on_ie () { var ua = window.navigator?window.navigator.userAgent:""; return ua.indexOf("MSIE") != -1 && ua.indexOf("Opera") != 0; } function caml_js_to_byte_string (s) {return new MlString (s);} function caml_js_wrap_callback(f) { var toArray = Array.prototype.slice; return function () { var args = (arguments.length > 0)?toArray.call (arguments):[undefined]; return caml_call_gen(f, args); } } function caml_make_vect (len, init) { var b = [0]; for (var i = 1; i <= len; i++) b[i] = init; return b; } function caml_ml_flush () { return 0; } function caml_ml_open_descriptor_out () { return 0; } function caml_ml_out_channels_list () { return 0; } function caml_ml_output () { return 0; } function caml_mul(x,y) { return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0; } function caml_compare (a, b) { return caml_compare_val (a, b, true); } function caml_notequal (x, y) { return +(caml_compare_val(x,y,false) != 0); } function caml_obj_is_block (x) { return +(x instanceof Array); } function caml_obj_tag (x) { return (x instanceof Array)?x[0]:1000; } function caml_register_global (n, v) { caml_global_data[n + 1] = v; } var caml_named_values = {}; function caml_register_named_value(nm,v) { caml_named_values[nm] = v; return 0; } function caml_string_equal(s1, s2) { var b1 = s1.fullBytes; var b2 = s2.fullBytes; if (b1 != null && b2 != null) return (b1 == b2)?1:0; return (s1.getFullBytes () == s2.getFullBytes ())?1:0; } function caml_string_notequal(s1, s2) { return 1-caml_string_equal(s1, s2); } function caml_sys_get_config () { return [0, new MlWrappedString("Unix"), 32]; } function caml_update_dummy (x, y) { if( typeof y==="function" ) { x.fun = y; return 0; } if( y.fun ) { x.fun = y.fun; return 0; } var i = y.length; while (i--) x[i] = y[i]; return 0; } (function() {function _jF_(_v$_,_wa_,_wb_,_wc_,_wd_,_we_,_wf_) {return _v$_.length==6 ?_v$_(_wa_,_wb_,_wc_,_wd_,_we_,_wf_) :caml_call_gen(_v$_,[_wa_,_wb_,_wc_,_wd_,_we_,_wf_]);} function _fz_(_v7_,_v8_,_v9_,_v__) {return _v7_.length==3 ?_v7_(_v8_,_v9_,_v__) :caml_call_gen(_v7_,[_v8_,_v9_,_v__]);} function _f4_(_v4_,_v5_,_v6_) {return _v4_.length==2?_v4_(_v5_,_v6_):caml_call_gen(_v4_,[_v5_,_v6_]);} function _c7_(_v2_,_v3_) {return _v2_.length==1?_v2_(_v3_):caml_call_gen(_v2_,[_v3_]);} var _a_=[0,new MlString("Failure")], _b_=[0,new MlString("Invalid_argument")], _c_=[0,new MlString("Not_found")], _d_=[0,new MlString("Assert_failure")], _e_=new MlString("File \"%s\", line %d, characters %d-%d: %s"), _f_=new MlString("monkey.model"), _g_=new MlString("canvas"); caml_register_global(5,[0,new MlString("Division_by_zero")]); caml_register_global(3,_b_); caml_register_global(2,_a_); var _cv_=[0,new MlString("Out_of_memory")], _cu_=[0,new MlString("Match_failure")], _ct_=[0,new MlString("Stack_overflow")], _cs_=[0,new MlString("Undefined_recursive_module")], _cr_=new MlString("%.12g"), _cq_=new MlString("."), _cp_=new MlString("%d"), _co_=new MlString("true"), _cn_=new MlString("false"), _cm_=new MlString("Pervasives.do_at_exit"), _cl_=new MlString("\\b"), _ck_=new MlString("\\t"), _cj_=new MlString("\\n"), _ci_=new MlString("\\r"), _ch_=new MlString("\\\\"), _cg_=new MlString("\\'"), _cf_=new MlString(""), _ce_=new MlString("String.blit"), _cd_=new MlString("String.sub"), _cc_=new MlString("Queue.Empty"), _cb_=new MlString("Buffer.add: cannot grow buffer"), _ca_=new MlString(""), _b$_=new MlString(""), _b__=new MlString("\""), _b9_=new MlString("\""), _b8_=new MlString("'"), _b7_=new MlString("'"), _b6_=new MlString("."), _b5_=new MlString("printf: bad positional specification (0)."), _b4_=new MlString("%_"), _b3_=[0,new MlString("printf.ml"),144,8], _b2_=new MlString("''"), _b1_=new MlString("Printf: premature end of format string ``"), _b0_=new MlString("''"), _bZ_=new MlString(" in format string ``"), _bY_=new MlString(", at char number "), _bX_=new MlString("Printf: bad conversion %"), _bW_=new MlString("Sformat.index_of_int: negative argument "), _bV_=new MlString(""), _bU_=new MlString(", %s%s"), _bT_=[1,1], _bS_=new MlString("%s\n"), _bR_= new MlString ("(Program not linked with -g, cannot print stack backtrace)\n"), _bQ_=new MlString("Raised at"), _bP_=new MlString("Re-raised at"), _bO_=new MlString("Raised by primitive operation at"), _bN_=new MlString("Called from"), _bM_=new MlString("%s file \"%s\", line %d, characters %d-%d"), _bL_=new MlString("%s unknown location"), _bK_=new MlString("Out of memory"), _bJ_=new MlString("Stack overflow"), _bI_=new MlString("Pattern matching failed"), _bH_=new MlString("Assertion failed"), _bG_=new MlString("Undefined recursive module"), _bF_=new MlString("(%s%s)"), _bE_=new MlString(""), _bD_=new MlString(""), _bC_=new MlString("(%s)"), _bB_=new MlString("%d"), _bA_=new MlString("%S"), _bz_=new MlString("_"), _by_=[0,new MlString("src/core/lwt.ml"),692,20], _bx_=[0,new MlString("src/core/lwt.ml"),695,8], _bw_=[0,new MlString("src/core/lwt.ml"),670,20], _bv_=[0,new MlString("src/core/lwt.ml"),673,8], _bu_=[0,new MlString("src/core/lwt.ml"),648,20], _bt_=[0,new MlString("src/core/lwt.ml"),651,8], _bs_=[0,new MlString("src/core/lwt.ml"),498,8], _br_=[0,new MlString("src/core/lwt.ml"),487,9], _bq_=new MlString("Lwt.wakeup_result"), _bp_=new MlString("Lwt.Canceled"), state_return_unit_bo_=[0,0], _bn_=new MlString("script"), _bm_=new MlString("canvas"), _bl_=new MlString("browser can't read file: unimplemented"), _bk_=new MlString("utf8"), _bj_=[0,new MlString("file.ml"),132,15], _bi_=new MlString("string"), _bh_=new MlString("can't retrieve file name: not implemented"), _bg_=new MlString("\\$&"), _bf_=new MlString("$$$$"), _be_=new MlString("g"), _bd_=new MlString("g"), _bc_=new MlString("[$]"), _bb_=new MlString("[\\][()\\\\|+*.?{}^$]"), _ba_=[0,new MlString(""),0], _a$_=new MlString(""), _a__=new MlString(""), _a9_=new MlString("#"), _a8_=new MlString(""), _a7_=new MlString("?"), _a6_=new MlString(""), _a5_=new MlString("/"), _a4_=new MlString("/"), _a3_=new MlString(":"), _a2_=new MlString(""), _a1_=new MlString("http://"), _a0_=new MlString(""), _aZ_=new MlString("#"), _aY_=new MlString(""), _aX_=new MlString("?"), _aW_=new MlString(""), _aV_=new MlString("/"), _aU_=new MlString("/"), _aT_=new MlString(":"), _aS_=new MlString(""), _aR_=new MlString("https://"), _aQ_=new MlString(""), _aP_=new MlString("#"), _aO_=new MlString(""), _aN_=new MlString("?"), _aM_=new MlString(""), _aL_=new MlString("/"), _aK_=new MlString("file://"), _aJ_=new MlString(""), _aI_=new MlString(""), _aH_=new MlString(""), _aG_=new MlString(""), _aF_=new MlString(""), _aE_=new MlString(""), _aD_=new MlString("="), _aC_=new MlString("&"), _aB_=new MlString("file"), _aA_=new MlString("file:"), _az_=new MlString("http"), _ay_=new MlString("http:"), _ax_=new MlString("https"), _aw_=new MlString("https:"), _av_=new MlString("%2B"), _au_=new MlString("Url.Local_exn"), _at_=new MlString("+"), _as_=new MlString("Url.Not_an_http_protocol"), _ar_= new MlString ("^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\[[0-9a-zA-Z.-]+\\]|\\[[0-9A-Fa-f:.]+\\])?(:([0-9]+))?/([^\\?#]*)(\\?([^#]*))?(#(.*))?$"), _aq_= new MlString("^([Ff][Ii][Ll][Ee])://([^\\?#]*)(\\?([^#])*)?(#(.*))?$"), _ap_=new MlString(""), _ao_=new MlString("POST"), _an_=new MlString("multipart/form-data; boundary="), _am_=new MlString("POST"), _al_= [0, new MlString("POST"), [0,new MlString("application/x-www-form-urlencoded")], 126925477], _ak_=[0,new MlString("POST"),0,126925477], _aj_=new MlString("GET"), _ai_=new MlString("?"), _ah_=new MlString("Content-type"), _ag_=new MlString("="), _af_=new MlString("="), _ae_=new MlString("&"), _ad_=new MlString("Content-Type: application/octet-stream\r\n"), _ac_=new MlString("\"\r\n"), _ab_=new MlString("\"; filename=\""), _aa_=new MlString("Content-Disposition: form-data; name=\""), _$_=new MlString("\r\n"), ___=new MlString("\r\n"), _Z_=new MlString("\r\n"), _Y_=new MlString("--"), _X_=new MlString("\r\n"), _W_=new MlString("\"\r\n\r\n"), _V_=new MlString("Content-Disposition: form-data; name=\""), _U_=new MlString("--\r\n"), _T_=new MlString("--"), _S_=new MlString("js_of_ocaml-------------------"), _R_=new MlString("Msxml2.XMLHTTP"), _Q_=new MlString("Msxml3.XMLHTTP"), _P_=new MlString("Microsoft.XMLHTTP"), _O_=[0,new MlString("xmlHttpRequest.ml"),79,2], _N_=new MlString("XmlHttpRequest.Wrong_headers"), _M_=new MlString("webgl"), _L_=new MlString("experimental-webgl"), _K_=new MlString("uncaught exception: %s"), _J_=new MlString("%.1f"), _I_=new MlString("loading"), _H_=new MlString("fps"), _G_=new MlString("fragment-shader"), _F_=new MlString("vertex-shader"), _E_=new MlString("program loaded"), _D_=new MlString("u_proj"), _C_=new MlString("u_lightPos"), _B_=new MlString("u_ambientLight"), _A_=new MlString("a_position"), _z_=new MlString("a_normal"), _y_=new MlString("ready"), _x_=new MlString("\n"), _w_=[0,1,[0,2,[0,3,[0,4,0]]]], _v_=new MlString("f"), _u_=new MlString("v"), _t_=new MlString("vn"), _s_=[0,1,[0,2,0]], _r_=new MlString("can't find script element %s"), _q_=new MlString("Unable to link the shader program."), _p_=new MlString("An error occurred compiling the shaders: \n%s\n%s"), _o_=new MlString("can't initialise webgl context"), _n_=new MlString("can't find canvas element %s"), _m_=new MlString("WebGL error"), _l_=new MlString("(v|vn|f)\\ ([^\\ ]+)\\ ([^\\ ]+)\\ ([^\\ ]+)"), _k_=new MlString("([0-9]+)//([0-9]+)"); function _j_(s_h_){throw [0,_a_,s_h_];} function _cw_(s_i_){throw [0,_b_,s_i_];} function _cH_(s1_cx_,s2_cz_) {var l1_cy_=s1_cx_.getLen(), l2_cA_=s2_cz_.getLen(), s_cB_=caml_create_string(l1_cy_+l2_cA_|0); caml_blit_string(s1_cx_,0,s_cB_,0,l1_cy_); caml_blit_string(s2_cz_,0,s_cB_,l1_cy_,l2_cA_); return s_cB_;} function string_of_int_cQ_(n_cC_){return caml_format_int(_cp_,n_cC_);} function string_of_float_cR_(f_cD_) {var _cE_=caml_format_float(_cr_,f_cD_),i_cF_=0,l_cG_=_cE_.getLen(); for(;;) {if(l_cG_<=i_cF_) var _cI_=_cH_(_cE_,_cq_); else {var _cJ_=_cE_.safeGet(i_cF_), _cK_=48<=_cJ_?58<=_cJ_?0:1:45===_cJ_?1:0; if(_cK_){var _cL_=i_cF_+1|0,i_cF_=_cL_;continue;} var _cI_=_cE_;} return _cI_;}} function _cN_(l1_cM_,l2_cO_) {if(l1_cM_) {var hd_cP_=l1_cM_[1];return [0,hd_cP_,_cN_(l1_cM_[2],l2_cO_)];} return l2_cO_;} var stderr_cS_=caml_ml_open_descriptor_out(2); function output_string_c0_(oc_cU_,s_cT_) {return caml_ml_output(oc_cU_,s_cT_,0,s_cT_.getLen());} function do_at_exit_cZ_(param_cY_) {var param_cV_=caml_ml_out_channels_list(0); for(;;) {if(param_cV_) {var l_cW_=param_cV_[2]; try {}catch(_cX_){} var param_cV_=l_cW_; continue;} return 0;}} caml_register_named_value(_cm_,do_at_exit_cZ_); function _c4_(_c2_,_c1_){return caml_ml_output_char(_c2_,_c1_);} function _do_(_c3_){return caml_ml_flush(_c3_);} function _dn_(l_c5_,f_c6_) {if(0===l_c5_)return [0]; var res_c8_=caml_make_vect(l_c5_,_c7_(f_c6_,0)),_c9_=1,_c__=l_c5_-1|0; if(!(_c__<_c9_)) {var i_c$_=_c9_; for(;;) {res_c8_[i_c$_+1]=_c7_(f_c6_,i_c$_); var _da_=i_c$_+1|0; if(_c__!==i_c$_){var i_c$_=_da_;continue;} break;}} return res_c8_;} function _dp_(l_db_) {if(l_db_) {var accu_dc_=0,param_dd_=l_db_,tl_dj_=l_db_[2],hd_dg_=l_db_[1]; for(;;) {if(param_dd_) {var t_df_=param_dd_[2], _de_=accu_dc_+1|0, accu_dc_=_de_, param_dd_=t_df_; continue;} var a_dh_=caml_make_vect(accu_dc_,hd_dg_),i_di_=1,param_dk_=tl_dj_; for(;;) {if(param_dk_) {var tl_dl_=param_dk_[2]; a_dh_[i_di_+1]=param_dk_[1]; var _dm_=i_di_+1|0,i_di_=_dm_,param_dk_=tl_dl_; continue;} return a_dh_;}}} return [0];} function _dE_(l_dq_) {var l1_dr_=l_dq_,l2_ds_=0; for(;;) {if(l1_dr_) {var l_dt_=l1_dr_[2], _du_=[0,l1_dr_[1],l2_ds_], l1_dr_=l_dt_, l2_ds_=_du_; continue;} return l2_ds_;}} function _dy_(f_dw_,param_dv_) {if(param_dv_) {var l_dx_=param_dv_[2],r_dz_=_c7_(f_dw_,param_dv_[1]); return [0,r_dz_,_dy_(f_dw_,l_dx_)];} return 0;} function _dF_(f_dC_,param_dA_) {var param_dB_=param_dA_; for(;;) {if(param_dB_) {var l_dD_=param_dB_[2]; _c7_(f_dC_,param_dB_[1]); var param_dB_=l_dD_; continue;} return 0;}} function _d2_(n_dG_,c_dI_) {var s_dH_=caml_create_string(n_dG_); caml_fill_string(s_dH_,0,n_dG_,c_dI_); return s_dH_;} function _d3_(s_dL_,ofs_dJ_,len_dK_) {if(0<=ofs_dJ_&&0<=len_dK_&&!((s_dL_.getLen()-len_dK_|0)<ofs_dJ_)) {var r_dM_=caml_create_string(len_dK_); caml_blit_string(s_dL_,ofs_dJ_,r_dM_,0,len_dK_); return r_dM_;} return _cw_(_cd_);} function _d4_(s1_dP_,ofs1_dO_,s2_dR_,ofs2_dQ_,len_dN_) {if (0<= len_dN_&& 0<= ofs1_dO_&& !((s1_dP_.getLen()-len_dN_|0)<ofs1_dO_)&& 0<= ofs2_dQ_&& !((s2_dR_.getLen()-len_dN_|0)<ofs2_dQ_)) return caml_blit_string(s1_dP_,ofs1_dO_,s2_dR_,ofs2_dQ_,len_dN_); return _cw_(_ce_);} function _d5_(sep_dY_,l_dS_) {if(l_dS_) {var hd_dT_=l_dS_[1],num_dU_=[0,0],len_dV_=[0,0],tl_dX_=l_dS_[2]; _dF_ (function(s_dW_) {num_dU_[1]+=1;len_dV_[1]=len_dV_[1]+s_dW_.getLen()|0;return 0;}, l_dS_); var r_dZ_= caml_create_string (len_dV_[1]+caml_mul(sep_dY_.getLen(),num_dU_[1]-1|0)|0); caml_blit_string(hd_dT_,0,r_dZ_,0,hd_dT_.getLen()); var pos_d0_=[0,hd_dT_.getLen()]; _dF_ (function(s_d1_) {caml_blit_string(sep_dY_,0,r_dZ_,pos_d0_[1],sep_dY_.getLen()); pos_d0_[1]=pos_d0_[1]+sep_dY_.getLen()|0; caml_blit_string(s_d1_,0,r_dZ_,pos_d0_[1],s_d1_.getLen()); pos_d0_[1]=pos_d0_[1]+s_d1_.getLen()|0; return 0;}, tl_dX_); return r_dZ_;} return _cf_;} var _d6_=caml_sys_get_config(0)[2], _d7_=caml_mul(_d6_/8|0,(1<<(_d6_-10|0))-1|0)-1|0, _ee_=252, _ed_=253, _d__=[0,_cc_]; function _ec_(param_d8_){return [0,0,0];} function _ef_(q_d9_) {if(0===q_d9_[1])throw [0,_d__]; q_d9_[1]=q_d9_[1]-1|0; var tail_d$_=q_d9_[2],head_ea_=tail_d$_[2]; if(head_ea_===tail_d$_)q_d9_[2]=0;else tail_d$_[2]=head_ea_[2]; return head_ea_[1];} function _eg_(q_eb_){return q_eb_[1];} function _ey_(n_eh_) {var n_ei_=1<=n_eh_?n_eh_:1, n_ej_=_d7_<n_ei_?_d7_:n_ei_, s_ek_=caml_create_string(n_ej_); return [0,s_ek_,0,n_ej_,s_ek_];} function _ez_(b_el_){return _d3_(b_el_[1],0,b_el_[2]);} function _es_(b_em_,more_eo_) {var new_len_en_=[0,b_em_[3]]; for(;;) {if(new_len_en_[1]<(b_em_[2]+more_eo_|0)) {new_len_en_[1]=2*new_len_en_[1]|0;continue;} if(_d7_<new_len_en_[1]) if((b_em_[2]+more_eo_|0)<=_d7_)new_len_en_[1]=_d7_;else _j_(_cb_); var new_buffer_ep_=caml_create_string(new_len_en_[1]); _d4_(b_em_[1],0,new_buffer_ep_,0,b_em_[2]); b_em_[1]=new_buffer_ep_; b_em_[3]=new_len_en_[1]; return 0;}} function _eA_(b_eq_,c_et_) {var pos_er_=b_eq_[2]; if(b_eq_[3]<=pos_er_)_es_(b_eq_,1); b_eq_[1].safeSet(pos_er_,c_et_); b_eq_[2]=pos_er_+1|0; return 0;} function _eB_(b_ew_,s_eu_) {var len_ev_=s_eu_.getLen(),new_position_ex_=b_ew_[2]+len_ev_|0; if(b_ew_[3]<new_position_ex_)_es_(b_ew_,len_ev_); _d4_(s_eu_,0,b_ew_[1],b_ew_[2],len_ev_); b_ew_[2]=new_position_ex_; return 0;} function index_of_int_eF_(i_eC_) {return 0<=i_eC_?i_eC_:_j_(_cH_(_bW_,string_of_int_cQ_(i_eC_)));} function add_int_index_eG_(i_eD_,idx_eE_) {return index_of_int_eF_(i_eD_+idx_eE_|0);} var _eH_=_c7_(add_int_index_eG_,1); function _eO_(fmt_eI_){return _d3_(fmt_eI_,0,fmt_eI_.getLen());} function bad_conversion_eQ_(sfmt_eJ_,i_eK_,c_eM_) {var _eL_=_cH_(_bZ_,_cH_(sfmt_eJ_,_b0_)), _eN_=_cH_(_bY_,_cH_(string_of_int_cQ_(i_eK_),_eL_)); return _cw_(_cH_(_bX_,_cH_(_d2_(1,c_eM_),_eN_)));} function bad_conversion_format_fF_(fmt_eP_,i_eS_,c_eR_) {return bad_conversion_eQ_(_eO_(fmt_eP_),i_eS_,c_eR_);} function incomplete_format_fG_(fmt_eT_) {return _cw_(_cH_(_b1_,_cH_(_eO_(fmt_eT_),_b2_)));} function extract_format_fb_(fmt_eU_,start_e2_,stop_e4_,widths_e6_) {function skip_positional_spec_e1_(start_eV_) {if ((fmt_eU_.safeGet(start_eV_)-48|0)< 0|| 9< (fmt_eU_.safeGet(start_eV_)-48|0)) return start_eV_; var i_eW_=start_eV_+1|0; for(;;) {var _eX_=fmt_eU_.safeGet(i_eW_); if(48<=_eX_) {if(!(58<=_eX_)){var _eZ_=i_eW_+1|0,i_eW_=_eZ_;continue;} var _eY_=0;} else if(36===_eX_){var _e0_=i_eW_+1|0,_eY_=1;}else var _eY_=0; if(!_eY_)var _e0_=start_eV_; return _e0_;}} var start_e3_=skip_positional_spec_e1_(start_e2_+1|0), b_e5_=_ey_((stop_e4_-start_e3_|0)+10|0); _eA_(b_e5_,37); var i_e7_=start_e3_,widths_e8_=_dE_(widths_e6_); for(;;) {if(i_e7_<=stop_e4_) {var _e9_=fmt_eU_.safeGet(i_e7_); if(42===_e9_) {if(widths_e8_) {var t_e__=widths_e8_[2]; _eB_(b_e5_,string_of_int_cQ_(widths_e8_[1])); var i_e$_=skip_positional_spec_e1_(i_e7_+1|0), i_e7_=i_e$_, widths_e8_=t_e__; continue;} throw [0,_d_,_b3_];} _eA_(b_e5_,_e9_); var _fa_=i_e7_+1|0,i_e7_=_fa_; continue;} return _ez_(b_e5_);}} function extract_format_int_g5_ (conv_fh_,fmt_ff_,start_fe_,stop_fd_,widths_fc_) {var sfmt_fg_=extract_format_fb_(fmt_ff_,start_fe_,stop_fd_,widths_fc_); if(78!==conv_fh_&&110!==conv_fh_)return sfmt_fg_; sfmt_fg_.safeSet(sfmt_fg_.getLen()-1|0,117); return sfmt_fg_;} function sub_format_fH_ (incomplete_format_fo_,bad_conversion_format_fy_,conv_fD_,fmt_fi_,i_fC_) {var len_fj_=fmt_fi_.getLen(); function sub_fmt_fA_(c_fk_,i_fx_) {var close_fl_=40===c_fk_?41:125; function sub_fw_(j_fm_) {var j_fn_=j_fm_; for(;;) {if(len_fj_<=j_fn_)return _c7_(incomplete_format_fo_,fmt_fi_); if(37===fmt_fi_.safeGet(j_fn_)) {var _fp_=j_fn_+1|0; if(len_fj_<=_fp_) var _fq_=_c7_(incomplete_format_fo_,fmt_fi_); else {var _fr_=fmt_fi_.safeGet(_fp_),_fs_=_fr_-40|0; if(_fs_<0||1<_fs_) {var _ft_=_fs_-83|0; if(_ft_<0||2<_ft_) var _fu_=1; else switch(_ft_) {case 1:var _fu_=1;break; case 2:var _fv_=1,_fu_=0;break; default:var _fv_=0,_fu_=0;} if(_fu_){var _fq_=sub_fw_(_fp_+1|0),_fv_=2;}} else var _fv_=0===_fs_?0:1; switch(_fv_) {case 1: var _fq_= _fr_===close_fl_ ?_fp_+1|0 :_fz_(bad_conversion_format_fy_,fmt_fi_,i_fx_,_fr_); break; case 2:break; default:var _fq_=sub_fw_(sub_fmt_fA_(_fr_,_fp_+1|0)+1|0);}} return _fq_;} var _fB_=j_fn_+1|0,j_fn_=_fB_; continue;}} return sub_fw_(i_fx_);} return sub_fmt_fA_(conv_fD_,i_fC_);} function sub_format_for_printf_f7_(conv_fE_) {return _fz_ (sub_format_fH_, incomplete_format_fG_, bad_conversion_format_fF_, conv_fE_);} function iter_on_format_args_gl_(fmt_fI_,add_conv_fT_,add_char_f3_) {var lim_fJ_=fmt_fI_.getLen()-1|0; function scan_fmt_f5_(i_fK_) {var i_fL_=i_fK_; a: for(;;) {if(i_fL_<lim_fJ_) {if(37===fmt_fI_.safeGet(i_fL_)) {var skip_fM_=0,i_fN_=i_fL_+1|0; for(;;) {if(lim_fJ_<i_fN_) var _fO_=incomplete_format_fG_(fmt_fI_); else {var _fP_=fmt_fI_.safeGet(i_fN_); if(58<=_fP_) {if(95===_fP_) {var _fR_=i_fN_+1|0,_fQ_=1,skip_fM_=_fQ_,i_fN_=_fR_; continue;}} else if(32<=_fP_) switch(_fP_-32|0) {case 1: case 2: case 4: case 5: case 6: case 7: case 8: case 9: case 12: case 15:break; case 0: case 3: case 11: case 13:var _fS_=i_fN_+1|0,i_fN_=_fS_;continue; case 10: var _fU_=_fz_(add_conv_fT_,skip_fM_,i_fN_,105),i_fN_=_fU_; continue; default:var _fV_=i_fN_+1|0,i_fN_=_fV_;continue;} var i_fW_=i_fN_; c: for(;;) {if(lim_fJ_<i_fW_) var _fX_=incomplete_format_fG_(fmt_fI_); else {var _fY_=fmt_fI_.safeGet(i_fW_); if(126<=_fY_) var _fZ_=0; else switch(_fY_) {case 78: case 88: case 100: case 105: case 111: case 117: case 120: var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,105),_fZ_=1;break; case 69: case 70: case 71: case 101: case 102: case 103: var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,102),_fZ_=1;break; case 33: case 37: case 44: case 64:var _fX_=i_fW_+1|0,_fZ_=1;break; case 83: case 91: case 115: var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,115),_fZ_=1;break; case 97: case 114: case 116: var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,_fY_),_fZ_=1; break; case 76: case 108: case 110: var j_f0_=i_fW_+1|0; if(lim_fJ_<j_f0_) {var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,105),_fZ_=1;} else {var _f1_=fmt_fI_.safeGet(j_f0_)-88|0; if(_f1_<0||32<_f1_) var _f2_=1; else switch(_f1_) {case 0: case 12: case 17: case 23: case 29: case 32: var _fX_= _f4_ (add_char_f3_,_fz_(add_conv_fT_,skip_fM_,i_fW_,_fY_),105), _fZ_=1, _f2_=0; break; default:var _f2_=1;} if(_f2_) {var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,105),_fZ_=1;}} break; case 67: case 99: var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,99),_fZ_=1;break; case 66: case 98: var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,66),_fZ_=1;break; case 41: case 125: var _fX_=_fz_(add_conv_fT_,skip_fM_,i_fW_,_fY_),_fZ_=1; break; case 40: var _fX_=scan_fmt_f5_(_fz_(add_conv_fT_,skip_fM_,i_fW_,_fY_)), _fZ_=1; break; case 123: var i_f6_=_fz_(add_conv_fT_,skip_fM_,i_fW_,_fY_), j_f8_=_fz_(sub_format_for_printf_f7_,_fY_,fmt_fI_,i_f6_), i_f9_=i_f6_; for(;;) {if(i_f9_<(j_f8_-2|0)) {var _f__=_f4_(add_char_f3_,i_f9_,fmt_fI_.safeGet(i_f9_)), i_f9_=_f__; continue;} var _f$_=j_f8_-1|0,i_fW_=_f$_; continue c;} default:var _fZ_=0;} if(!_fZ_) var _fX_=bad_conversion_format_fF_(fmt_fI_,i_fW_,_fY_);} var _fO_=_fX_; break;}} var i_fL_=_fO_; continue a;}} var _ga_=i_fL_+1|0,i_fL_=_ga_; continue;} return i_fL_;}} scan_fmt_f5_(0); return 0;} function count_arguments_of_format_ii_(fmt_gm_) {var ac_gb_=[0,0,0,0]; function add_conv_gk_(skip_gg_,i_gh_,c_gc_) {var _gd_=41!==c_gc_?1:0,_ge_=_gd_?125!==c_gc_?1:0:_gd_; if(_ge_) {var inc_gf_=97===c_gc_?2:1; if(114===c_gc_)ac_gb_[3]=ac_gb_[3]+1|0; if(skip_gg_) ac_gb_[2]=ac_gb_[2]+inc_gf_|0; else ac_gb_[1]=ac_gb_[1]+inc_gf_|0;} return i_gh_+1|0;} iter_on_format_args_gl_ (fmt_gm_,add_conv_gk_,function(i_gi_,param_gj_){return i_gi_+1|0;}); return ac_gb_[1];} function scan_positional_spec_g1_(fmt_gn_,got_spec_gq_,i_go_) {var _gp_=fmt_gn_.safeGet(i_go_); if((_gp_-48|0)<0||9<(_gp_-48|0))return _f4_(got_spec_gq_,0,i_go_); var accu_gr_=_gp_-48|0,j_gs_=i_go_+1|0; for(;;) {var _gt_=fmt_gn_.safeGet(j_gs_); if(48<=_gt_) {if(!(58<=_gt_)) {var _gw_=j_gs_+1|0, _gv_=(10*accu_gr_|0)+(_gt_-48|0)|0, accu_gr_=_gv_, j_gs_=_gw_; continue;} var _gu_=0;} else if(36===_gt_) if(0===accu_gr_) {var _gx_=_j_(_b5_),_gu_=1;} else {var _gx_= _f4_(got_spec_gq_,[0,index_of_int_eF_(accu_gr_-1|0)],j_gs_+1|0), _gu_=1;} else var _gu_=0; if(!_gu_)var _gx_=_f4_(got_spec_gq_,0,i_go_); return _gx_;}} function next_index_gW_(spec_gy_,n_gz_) {return spec_gy_?n_gz_:_c7_(_eH_,n_gz_);} function get_index_gL_(spec_gA_,n_gB_){return spec_gA_?spec_gA_[1]:n_gB_;} function _jE_ (to_s_iC_,get_out_gD_,outc_iO_,outs_iD_,flush_in_,k_iU_,fmt_gC_) {var out_gE_=_c7_(get_out_gD_,fmt_gC_); function pr_im_(k_gJ_,n_iT_,fmt_gF_,v_gO_) {var len_gI_=fmt_gF_.getLen(); function doprn_ij_(n_iL_,i_gG_) {var i_gH_=i_gG_; for(;;) {if(len_gI_<=i_gH_)return _c7_(k_gJ_,out_gE_); var _gK_=fmt_gF_.safeGet(i_gH_); if(37===_gK_) {var get_arg_gS_= function(spec_gN_,n_gM_) {return caml_array_get(v_gO_,get_index_gL_(spec_gN_,n_gM_));}, scan_flags_gY_= function(spec_g0_,n_gT_,widths_gV_,i_gP_) {var i_gQ_=i_gP_; for(;;) {var _gR_=fmt_gF_.safeGet(i_gQ_)-32|0; if(!(_gR_<0||25<_gR_)) switch(_gR_) {case 1: case 2: case 4: case 5: case 6: case 7: case 8: case 9: case 12: case 15:break; case 10: return scan_positional_spec_g1_ (fmt_gF_, function(wspec_gU_,i_gZ_) {var _gX_=[0,get_arg_gS_(wspec_gU_,n_gT_),widths_gV_]; return scan_flags_gY_ (spec_g0_,next_index_gW_(wspec_gU_,n_gT_),_gX_,i_gZ_);}, i_gQ_+1|0); default:var _g2_=i_gQ_+1|0,i_gQ_=_g2_;continue;} var _g3_=fmt_gF_.safeGet(i_gQ_); if(124<=_g3_) var _g4_=0; else switch(_g3_) {case 78: case 88: case 100: case 105: case 111: case 117: case 120: var x_g6_=get_arg_gS_(spec_g0_,n_gT_), s_g7_= caml_format_int (extract_format_int_g5_(_g3_,fmt_gF_,i_gH_,i_gQ_,widths_gV_), x_g6_), _g9_= cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),s_g7_,i_gQ_+1|0), _g4_=1; break; case 69: case 71: case 101: case 102: case 103: var x_g__=get_arg_gS_(spec_g0_,n_gT_), s_g$_= caml_format_float (extract_format_fb_(fmt_gF_,i_gH_,i_gQ_,widths_gV_),x_g__), _g9_= cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),s_g$_,i_gQ_+1|0), _g4_=1; break; case 76: case 108: case 110: var _ha_=fmt_gF_.safeGet(i_gQ_+1|0)-88|0; if(_ha_<0||32<_ha_) var _hb_=1; else switch(_ha_) {case 0: case 12: case 17: case 23: case 29: case 32: var i_hc_=i_gQ_+1|0,_hd_=_g3_-108|0; if(_hd_<0||2<_hd_) var _he_=0; else {switch(_hd_) {case 1:var _he_=0,_hf_=0;break; case 2: var x_hg_=get_arg_gS_(spec_g0_,n_gT_), _hh_= caml_format_int (extract_format_fb_(fmt_gF_,i_gH_,i_hc_,widths_gV_),x_hg_), _hf_=1; break; default: var x_hi_=get_arg_gS_(spec_g0_,n_gT_), _hh_= caml_format_int (extract_format_fb_(fmt_gF_,i_gH_,i_hc_,widths_gV_),x_hi_), _hf_=1;} if(_hf_){var s_hj_=_hh_,_he_=1;}} if(!_he_) {var x_hk_=get_arg_gS_(spec_g0_,n_gT_), s_hj_= caml_int64_format (extract_format_fb_(fmt_gF_,i_gH_,i_hc_,widths_gV_),x_hk_);} var _g9_= cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),s_hj_,i_hc_+1|0), _g4_=1, _hb_=0; break; default:var _hb_=1;} if(_hb_) {var x_hl_=get_arg_gS_(spec_g0_,n_gT_), s_hm_= caml_format_int (extract_format_int_g5_(110,fmt_gF_,i_gH_,i_gQ_,widths_gV_), x_hl_), _g9_= cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),s_hm_,i_gQ_+1|0), _g4_=1;} break; case 37: case 64: var _g9_=cont_s_g8_(n_gT_,_d2_(1,_g3_),i_gQ_+1|0),_g4_=1; break; case 83: case 115: var x_hn_=get_arg_gS_(spec_g0_,n_gT_); if(115===_g3_) var x_ho_=x_hn_; else {var n_hp_=[0,0],_hq_=0,_hr_=x_hn_.getLen()-1|0; if(!(_hr_<_hq_)) {var i_hs_=_hq_; for(;;) {var _ht_=x_hn_.safeGet(i_hs_), _hu_= 14<=_ht_ ?34===_ht_?1:92===_ht_?1:0 :11<=_ht_?13<=_ht_?1:0:8<=_ht_?1:0, _hv_=_hu_?2:caml_is_printable(_ht_)?1:4; n_hp_[1]=n_hp_[1]+_hv_|0; var _hw_=i_hs_+1|0; if(_hr_!==i_hs_){var i_hs_=_hw_;continue;} break;}} if(n_hp_[1]===x_hn_.getLen()) var _hx_=x_hn_; else {var s__hy_=caml_create_string(n_hp_[1]); n_hp_[1]=0; var _hz_=0,_hA_=x_hn_.getLen()-1|0; if(!(_hA_<_hz_)) {var i_hB_=_hz_; for(;;) {var _hC_=x_hn_.safeGet(i_hB_),_hD_=_hC_-34|0; if(_hD_<0||58<_hD_) if(-20<=_hD_) var _hE_=1; else {switch(_hD_+34|0) {case 8: s__hy_.safeSet(n_hp_[1],92); n_hp_[1]+=1; s__hy_.safeSet(n_hp_[1],98); var _hF_=1; break; case 9: s__hy_.safeSet(n_hp_[1],92); n_hp_[1]+=1; s__hy_.safeSet(n_hp_[1],116); var _hF_=1; break; case 10: s__hy_.safeSet(n_hp_[1],92); n_hp_[1]+=1; s__hy_.safeSet(n_hp_[1],110); var _hF_=1; break; case 13: s__hy_.safeSet(n_hp_[1],92); n_hp_[1]+=1; s__hy_.safeSet(n_hp_[1],114); var _hF_=1; break; default:var _hE_=1,_hF_=0;} if(_hF_)var _hE_=0;} else var _hE_= (_hD_-1|0)<0||56<(_hD_-1|0) ?(s__hy_.safeSet(n_hp_[1],92), n_hp_[1]+= 1, s__hy_.safeSet(n_hp_[1],_hC_), 0) :1; if(_hE_) if(caml_is_printable(_hC_)) s__hy_.safeSet(n_hp_[1],_hC_); else {s__hy_.safeSet(n_hp_[1],92); n_hp_[1]+=1; s__hy_.safeSet(n_hp_[1],48+(_hC_/100|0)|0); n_hp_[1]+=1; s__hy_.safeSet(n_hp_[1],48+((_hC_/10|0)%10|0)|0); n_hp_[1]+=1; s__hy_.safeSet(n_hp_[1],48+(_hC_%10|0)|0);} n_hp_[1]+=1; var _hG_=i_hB_+1|0; if(_hA_!==i_hB_){var i_hB_=_hG_;continue;} break;}} var _hx_=s__hy_;} var x_ho_=_cH_(_b9_,_cH_(_hx_,_b__));} if(i_gQ_===(i_gH_+1|0)) var s_hH_=x_ho_; else {var _hI_= extract_format_fb_(fmt_gF_,i_gH_,i_gQ_,widths_gV_); try {var neg_hJ_=0,i_hK_=1; for(;;) {if(_hI_.getLen()<=i_hK_) var _hL_=[0,0,neg_hJ_]; else {var _hM_=_hI_.safeGet(i_hK_); if(49<=_hM_) if(58<=_hM_) var _hN_=0; else {var _hL_= [0, caml_int_of_string (_d3_(_hI_,i_hK_,(_hI_.getLen()-i_hK_|0)-1|0)), neg_hJ_], _hN_=1;} else {if(45===_hM_) {var _hP_=i_hK_+1|0,_hO_=1,neg_hJ_=_hO_,i_hK_=_hP_; continue;} var _hN_=0;} if(!_hN_){var _hQ_=i_hK_+1|0,i_hK_=_hQ_;continue;}} var match_hR_=_hL_; break;}} catch(_hS_) {if(_hS_[1]!==_a_)throw _hS_; var match_hR_=bad_conversion_eQ_(_hI_,0,115);} var p_hT_=match_hR_[1], _hU_=x_ho_.getLen(), _hV_=0, neg_hZ_=match_hR_[2], _hY_=32; if(p_hT_===_hU_&&0===_hV_) {var _hW_=x_ho_,_hX_=1;} else var _hX_=0; if(!_hX_) if(p_hT_<=_hU_) var _hW_=_d3_(x_ho_,_hV_,_hU_); else {var res_h0_=_d2_(p_hT_,_hY_); if(neg_hZ_) _d4_(x_ho_,_hV_,res_h0_,0,_hU_); else _d4_(x_ho_,_hV_,res_h0_,p_hT_-_hU_|0,_hU_); var _hW_=res_h0_;} var s_hH_=_hW_;} var _g9_= cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),s_hH_,i_gQ_+1|0), _g4_=1; break; case 67: case 99: var x_h1_=get_arg_gS_(spec_g0_,n_gT_); if(99===_g3_) var s_h2_=_d2_(1,x_h1_); else {if(39===x_h1_) var _h3_=_cg_; else if(92===x_h1_) var _h3_=_ch_; else {if(14<=x_h1_) var _h4_=0; else switch(x_h1_) {case 8:var _h3_=_cl_,_h4_=1;break; case 9:var _h3_=_ck_,_h4_=1;break; case 10:var _h3_=_cj_,_h4_=1;break; case 13:var _h3_=_ci_,_h4_=1;break; default:var _h4_=0;} if(!_h4_) if(caml_is_printable(x_h1_)) {var s_h5_=caml_create_string(1); s_h5_.safeSet(0,x_h1_); var _h3_=s_h5_;} else {var s_h6_=caml_create_string(4); s_h6_.safeSet(0,92); s_h6_.safeSet(1,48+(x_h1_/100|0)|0); s_h6_.safeSet(2,48+((x_h1_/10|0)%10|0)|0); s_h6_.safeSet(3,48+(x_h1_%10|0)|0); var _h3_=s_h6_;}} var s_h2_=_cH_(_b7_,_cH_(_h3_,_b8_));} var _g9_= cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),s_h2_,i_gQ_+1|0), _g4_=1; break; case 66: case 98: var _h8_=i_gQ_+1|0, _h7_=get_arg_gS_(spec_g0_,n_gT_)?_co_:_cn_, _g9_=cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),_h7_,_h8_), _g4_=1; break; case 40: case 123: var xf_h9_=get_arg_gS_(spec_g0_,n_gT_), j_h__=_fz_(sub_format_for_printf_f7_,_g3_,fmt_gF_,i_gQ_+1|0); if(123===_g3_) {var b_h$_=_ey_(xf_h9_.getLen()), add_char_id_= function(i_ib_,c_ia_){_eA_(b_h$_,c_ia_);return i_ib_+1|0;}; iter_on_format_args_gl_ (xf_h9_, function(skip_ic_,i_if_,c_ie_) {if(skip_ic_)_eB_(b_h$_,_b4_);else _eA_(b_h$_,37); return add_char_id_(i_if_,c_ie_);}, add_char_id_); var _ig_=_ez_(b_h$_), _g9_=cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),_ig_,j_h__), _g4_=1;} else {var _ih_=next_index_gW_(spec_g0_,n_gT_), m_ik_= add_int_index_eG_ (count_arguments_of_format_ii_(xf_h9_),_ih_), _g9_= pr_im_ (function(param_il_){return doprn_ij_(m_ik_,j_h__);}, _ih_, xf_h9_, v_gO_), _g4_=1;} break; case 33: _c7_(flush_in_,out_gE_); var _g9_=doprn_ij_(n_gT_,i_gQ_+1|0),_g4_=1; break; case 41: var _g9_=cont_s_g8_(n_gT_,_ca_,i_gQ_+1|0),_g4_=1;break; case 44: var _g9_=cont_s_g8_(n_gT_,_b$_,i_gQ_+1|0),_g4_=1;break; case 70: var x_io_=get_arg_gS_(spec_g0_,n_gT_); if(0===widths_gV_) var s_ip_=string_of_float_cR_(x_io_); else {var sfmt_iq_= extract_format_fb_(fmt_gF_,i_gH_,i_gQ_,widths_gV_); if(70===_g3_)sfmt_iq_.safeSet(sfmt_iq_.getLen()-1|0,103); var s_ir_=caml_format_float(sfmt_iq_,x_io_); if(3<=caml_classify_float(x_io_)) var _is_=s_ir_; else {var i_it_=0,l_iu_=s_ir_.getLen(); for(;;) {if(l_iu_<=i_it_) var _iv_=_cH_(s_ir_,_b6_); else {var _iw_=s_ir_.safeGet(i_it_)-46|0, _ix_= _iw_<0||23<_iw_ ?55===_iw_?1:0 :(_iw_-1|0)<0||21<(_iw_-1|0)?1:0; if(!_ix_){var _iy_=i_it_+1|0,i_it_=_iy_;continue;} var _iv_=s_ir_;} var _is_=_iv_; break;}} var s_ip_=_is_;} var _g9_= cont_s_g8_(next_index_gW_(spec_g0_,n_gT_),s_ip_,i_gQ_+1|0), _g4_=1; break; case 91: var _g9_=bad_conversion_format_fF_(fmt_gF_,i_gQ_,_g3_), _g4_=1; break; case 97: var printer_iz_=get_arg_gS_(spec_g0_,n_gT_), n_iA_=_c7_(_eH_,get_index_gL_(spec_g0_,n_gT_)), arg_iB_=get_arg_gS_(0,n_iA_), _iF_=i_gQ_+1|0, _iE_=next_index_gW_(spec_g0_,n_iA_); if(to_s_iC_) _f4_(outs_iD_,out_gE_,_f4_(printer_iz_,0,arg_iB_)); else _f4_(printer_iz_,out_gE_,arg_iB_); var _g9_=doprn_ij_(_iE_,_iF_),_g4_=1; break; case 114: var _g9_=bad_conversion_format_fF_(fmt_gF_,i_gQ_,_g3_), _g4_=1; break; case 116: var printer_iG_=get_arg_gS_(spec_g0_,n_gT_), _iI_=i_gQ_+1|0, _iH_=next_index_gW_(spec_g0_,n_gT_); if(to_s_iC_) _f4_(outs_iD_,out_gE_,_c7_(printer_iG_,0)); else _c7_(printer_iG_,out_gE_); var _g9_=doprn_ij_(_iH_,_iI_),_g4_=1; break; default:var _g4_=0;} if(!_g4_) var _g9_=bad_conversion_format_fF_(fmt_gF_,i_gQ_,_g3_); return _g9_;}}, _iN_=i_gH_+1|0, _iK_=0; return scan_positional_spec_g1_ (fmt_gF_, function(spec_iM_,i_iJ_) {return scan_flags_gY_(spec_iM_,n_iL_,_iK_,i_iJ_);}, _iN_);} _f4_(outc_iO_,out_gE_,_gK_); var _iP_=i_gH_+1|0,i_gH_=_iP_; continue;}} function cont_s_g8_(n_iS_,s_iQ_,i_iR_) {_f4_(outs_iD_,out_gE_,s_iQ_);return doprn_ij_(n_iS_,i_iR_);} return doprn_ij_(n_iT_,0);} var kpr_iV_=_f4_(pr_im_,k_iU_,index_of_int_eF_(0)), _iW_=count_arguments_of_format_ii_(fmt_gC_); if(_iW_<0||6<_iW_) {var loop_i9_= function(i_iX_,args_i3_) {if(_iW_<=i_iX_) {var a_iY_=caml_make_vect(_iW_,0), _i1_= function(i_iZ_,arg_i0_) {return caml_array_set(a_iY_,(_iW_-i_iZ_|0)-1|0,arg_i0_);}, i_i2_=0, param_i4_=args_i3_; for(;;) {if(param_i4_) {var _i5_=param_i4_[2],_i6_=param_i4_[1]; if(_i5_) {_i1_(i_i2_,_i6_); var _i7_=i_i2_+1|0,i_i2_=_i7_,param_i4_=_i5_; continue;} _i1_(i_i2_,_i6_);} return _f4_(kpr_iV_,fmt_gC_,a_iY_);}} return function(x_i8_) {return loop_i9_(i_iX_+1|0,[0,x_i8_,args_i3_]);};}, _i__=loop_i9_(0,0);} else switch(_iW_) {case 1: var _i__= function(x_ja_) {var a_i$_=caml_make_vect(1,0); caml_array_set(a_i$_,0,x_ja_); return _f4_(kpr_iV_,fmt_gC_,a_i$_);}; break; case 2: var _i__= function(x_jc_,y_jd_) {var a_jb_=caml_make_vect(2,0); caml_array_set(a_jb_,0,x_jc_); caml_array_set(a_jb_,1,y_jd_); return _f4_(kpr_iV_,fmt_gC_,a_jb_);}; break; case 3: var _i__= function(x_jf_,y_jg_,z_jh_) {var a_je_=caml_make_vect(3,0); caml_array_set(a_je_,0,x_jf_); caml_array_set(a_je_,1,y_jg_); caml_array_set(a_je_,2,z_jh_); return _f4_(kpr_iV_,fmt_gC_,a_je_);}; break; case 4: var _i__= function(x_jj_,y_jk_,z_jl_,t_jm_) {var a_ji_=caml_make_vect(4,0); caml_array_set(a_ji_,0,x_jj_); caml_array_set(a_ji_,1,y_jk_); caml_array_set(a_ji_,2,z_jl_); caml_array_set(a_ji_,3,t_jm_); return _f4_(kpr_iV_,fmt_gC_,a_ji_);}; break; case 5: var _i__= function(x_jo_,y_jp_,z_jq_,t_jr_,u_js_) {var a_jn_=caml_make_vect(5,0); caml_array_set(a_jn_,0,x_jo_); caml_array_set(a_jn_,1,y_jp_); caml_array_set(a_jn_,2,z_jq_); caml_array_set(a_jn_,3,t_jr_); caml_array_set(a_jn_,4,u_js_); return _f4_(kpr_iV_,fmt_gC_,a_jn_);}; break; case 6: var _i__= function(x_ju_,y_jv_,z_jw_,t_jx_,u_jy_,v_jz_) {var a_jt_=caml_make_vect(6,0); caml_array_set(a_jt_,0,x_ju_); caml_array_set(a_jt_,1,y_jv_); caml_array_set(a_jt_,2,z_jw_); caml_array_set(a_jt_,3,t_jx_); caml_array_set(a_jt_,4,u_jy_); caml_array_set(a_jt_,5,v_jz_); return _f4_(kpr_iV_,fmt_gC_,a_jt_);}; break; default:var _i__=_f4_(kpr_iV_,fmt_gC_,[0]);} return _i__;} function _jS_(oc_jB_) {function _jD_(_jA_){return 0;} return _jF_ (_jE_, 0, function(param_jC_){return oc_jB_;}, _c4_, output_string_c0_, _do_, _jD_);} function _jO_(fmt_jG_){return _ey_(2*fmt_jG_.getLen()|0);} function _jL_(k_jJ_,b_jH_) {var s_jI_=_ez_(b_jH_);b_jH_[2]=0;return _c7_(k_jJ_,s_jI_);} function _jR_(k_jK_) {var _jN_=_c7_(_jL_,k_jK_); return _jF_(_jE_,1,_jO_,_eA_,_eB_,function(_jM_){return 0;},_jN_);} function _jT_(fmt_jQ_) {return _f4_(_jR_,function(s_jP_){return s_jP_;},fmt_jQ_);} var _jU_=[0,0]; function _j1_(x_jV_,i_jW_) {var f_jX_=x_jV_[i_jW_+1]; return caml_obj_is_block(f_jX_) ?caml_obj_tag(f_jX_)===_ee_ ?_f4_(_jT_,_bA_,f_jX_) :caml_obj_tag(f_jX_)===_ed_?string_of_float_cR_(f_jX_):_bz_ :_f4_(_jT_,_bB_,f_jX_);} function _j0_(x_jY_,i_jZ_) {if(x_jY_.length-1<=i_jZ_)return _bV_; var _j2_=_j0_(x_jY_,i_jZ_+1|0); return _fz_(_jT_,_bU_,_j1_(x_jY_,i_jZ_),_j2_);} function _kj_(x_j4_) {var param_j3_=_jU_[1]; for(;;) {if(param_j3_) {var tl_j9_=param_j3_[2],hd_j5_=param_j3_[1]; try {var _j6_=_c7_(hd_j5_,x_j4_),_j7_=_j6_;}catch(_j__){var _j7_=0;} if(!_j7_){var param_j3_=tl_j9_;continue;} var _j8_=_j7_[1];} else if(x_j4_[1]===_cv_) var _j8_=_bK_; else if(x_j4_[1]===_ct_) var _j8_=_bJ_; else if(x_j4_[1]===_cu_) {var match_j$_=x_j4_[2], char_ka_=match_j$_[3], _j8_= _jF_ (_jT_, _e_, match_j$_[1], match_j$_[2], char_ka_, char_ka_+5|0, _bI_);} else if(x_j4_[1]===_d_) {var match_kb_=x_j4_[2], char_kc_=match_kb_[3], _j8_= _jF_ (_jT_, _e_, match_kb_[1], match_kb_[2], char_kc_, char_kc_+6|0, _bH_);} else if(x_j4_[1]===_cs_) {var match_kd_=x_j4_[2], char_ke_=match_kd_[3], _j8_= _jF_ (_jT_, _e_, match_kd_[1], match_kd_[2], char_ke_, char_ke_+6|0, _bG_);} else {var _kf_=x_j4_.length-1,constructor_ki_=x_j4_[0+1][0+1]; if(_kf_<0||2<_kf_) {var _kg_=_j0_(x_j4_,2), _kh_=_fz_(_jT_,_bF_,_j1_(x_j4_,1),_kg_);} else switch(_kf_) {case 1:var _kh_=_bD_;break; case 2:var _kh_=_f4_(_jT_,_bC_,_j1_(x_j4_,1));break; default:var _kh_=_bE_;} var _j8_=_cH_(constructor_ki_,_kh_);} return _j8_;}} 32===_d6_; function _km_(param_kl_) {var seq_kk_=[]; caml_update_dummy(seq_kk_,[0,seq_kk_,seq_kk_]); return seq_kk_;} var Canceled_kn_=[0,_bp_],current_data_ko_=[0,0],max_removed_k__=42; function repr_rec_ks_(t_kp_) {var _kq_=t_kp_[1]; {if(3===_kq_[0]) {var t__kr_=_kq_[1],t___kt_=repr_rec_ks_(t__kr_); if(t___kt_!==t__kr_)t_kp_[1]=[3,t___kt_]; return t___kt_;} return t_kp_;}} function repr_k$_(t_ku_){return repr_rec_ks_(t_ku_);} function call_unsafe_k4_(f_kw_,x_kv_) {try {var _kx_=_c7_(f_kw_,x_kv_);} catch(_ky_) {_kj_(_ky_); caml_ml_output_char(stderr_cS_,10); var _kz_=caml_get_exception_backtrace(0); if(_kz_) {var a_kA_=_kz_[1],_kB_=0,_kC_=a_kA_.length-1-1|0; if(!(_kC_<_kB_)) {var i_kD_=_kB_; for(;;) {if(caml_notequal(caml_array_get(a_kA_,i_kD_),_bT_)) {var _kE_=caml_array_get(a_kA_,i_kD_), is_raise_kF_=0===_kE_[0]?_kE_[1]:_kE_[1], info_kG_=is_raise_kF_?0===i_kD_?_bQ_:_bP_:0===i_kD_?_bO_:_bN_, _kH_= 0===_kE_[0] ?_jF_(_jT_,_bM_,info_kG_,_kE_[2],_kE_[3],_kE_[4],_kE_[5]) :_f4_(_jT_,_bL_,info_kG_); _fz_(_jS_,stderr_cS_,_bS_,_kH_);} var _kI_=i_kD_+1|0; if(_kC_!==i_kD_){var i_kD_=_kI_;continue;} break;}}} else _f4_(_jS_,stderr_cS_,_bR_); do_at_exit_cZ_(0); return caml_sys_exit(2);} return _kx_;} function run_waiters_rec_kT_(state_kN_,ws_kJ_,rem_kL_) {var ws_kK_=ws_kJ_,rem_kM_=rem_kL_; for(;;) if(typeof ws_kK_==="number") return run_waiters_rec_next_kO_(state_kN_,rem_kM_); else switch(ws_kK_[0]) {case 1: _c7_(ws_kK_[1],state_kN_); return run_waiters_rec_next_kO_(state_kN_,rem_kM_); case 2: var ws1_kP_=ws_kK_[1], _kQ_=[0,ws_kK_[2],rem_kM_], ws_kK_=ws1_kP_, rem_kM_=_kQ_; continue; default: var _kR_=ws_kK_[1][1]; return _kR_ ?(_c7_(_kR_[1],state_kN_), run_waiters_rec_next_kO_(state_kN_,rem_kM_)) :run_waiters_rec_next_kO_(state_kN_,rem_kM_);}} function run_waiters_rec_next_kO_(state_kU_,rem_kS_) {return rem_kS_?run_waiters_rec_kT_(state_kU_,rem_kS_[1],rem_kS_[2]):0;} function run_cancel_handlers_rec_k6_(chs_kV_,rem_kX_) {var chs_kW_=chs_kV_,rem_kY_=rem_kX_; for(;;) if(typeof chs_kW_==="number") return run_cancel_handlers_rec_next_k0_(rem_kY_); else switch(chs_kW_[0]) {case 1: var n_kZ_=chs_kW_[1]; if(n_kZ_[4]){n_kZ_[4]=0;n_kZ_[1][2]=n_kZ_[2];n_kZ_[2][1]=n_kZ_[1];} return run_cancel_handlers_rec_next_k0_(rem_kY_); case 2: var chs1_k1_=chs_kW_[1], _k2_=[0,chs_kW_[2],rem_kY_], chs_kW_=chs1_k1_, rem_kY_=_k2_; continue; default: var f_k3_=chs_kW_[2]; current_data_ko_[1]=chs_kW_[1]; call_unsafe_k4_(f_k3_,0); return run_cancel_handlers_rec_next_k0_(rem_kY_);}} function run_cancel_handlers_rec_next_k0_(rem_k5_) {return rem_k5_?run_cancel_handlers_rec_k6_(rem_k5_[1],rem_k5_[2]):0;} function unsafe_run_waiters_la_(sleeper_k8_,state_k7_) {var _k9_= 1===state_k7_[0] ?state_k7_[1][1]===Canceled_kn_ ?(run_cancel_handlers_rec_k6_(sleeper_k8_[4],0),1) :0 :0; _k9_; return run_waiters_rec_kT_(state_k7_,sleeper_k8_[2],0);} var wakening_lb_=[0,0],to_wakeup_lc_=_ec_(0); function wakeup_result_ln_(t_ld_,result_lg_) {var t_le_=repr_rec_ks_(t_ld_),_lf_=t_le_[1]; switch(_lf_[0]) {case 1:if(_lf_[1][1]===Canceled_kn_)return 0;break; case 2: var sleeper_lh_=_lf_[1]; t_le_[1]=result_lg_; var snapshot_li_=current_data_ko_[1], already_wakening_lj_=wakening_lb_[1]?1:(wakening_lb_[1]=1,0); unsafe_run_waiters_la_(sleeper_lh_,result_lg_); if(already_wakening_lj_) {current_data_ko_[1]=snapshot_li_;var _lk_=0;} else for(;;) {if(0!==to_wakeup_lc_[1]) {var closure_ll_=_ef_(to_wakeup_lc_); unsafe_run_waiters_la_(closure_ll_[1],closure_ll_[2]); continue;} wakening_lb_[1]=0; current_data_ko_[1]=snapshot_li_; var _lk_=0; break;} return _lk_; default:} return _cw_(_bq_);} function wakeup_lP_(t_lo_,v_lm_) {return wakeup_result_ln_(t_lo_,[0,v_lm_]);} function append_lv_(l1_lp_,l2_lq_) {return typeof l1_lp_==="number" ?l2_lq_ :typeof l2_lq_==="number"?l1_lp_:[2,l1_lp_,l2_lq_];} function cleanup_ls_(ws_lr_) {if(typeof ws_lr_!=="number") switch(ws_lr_[0]) {case 2: var l1_lt_=ws_lr_[1],_lu_=cleanup_ls_(ws_lr_[2]); return append_lv_(cleanup_ls_(l1_lt_),_lu_); case 1:break; default:if(!ws_lr_[1][1])return 0;} return ws_lr_;} function connect_lQ_(t1_lw_,t2_ly_) {var t1_lx_=repr_k$_(t1_lw_),t2_lz_=repr_k$_(t2_ly_),_lA_=t1_lx_[1]; {if(2===_lA_[0]) {var sleeper1_lB_=_lA_[1]; if(t1_lx_===t2_lz_)return 0; var _lC_=t2_lz_[1]; {if(2===_lC_[0]) {var sleeper2_lD_=_lC_[1]; t2_lz_[1]=[3,t1_lx_]; sleeper1_lB_[1]=sleeper2_lD_[1]; var waiters_lE_=append_lv_(sleeper1_lB_[2],sleeper2_lD_[2]), removed_lF_=sleeper1_lB_[3]+sleeper2_lD_[3]|0; if(max_removed_k__<removed_lF_) {sleeper1_lB_[3]=0;sleeper1_lB_[2]=cleanup_ls_(waiters_lE_);} else {sleeper1_lB_[3]=removed_lF_;sleeper1_lB_[2]=waiters_lE_;} var _lG_=sleeper2_lD_[4], _lH_=sleeper1_lB_[4], _lI_= typeof _lH_==="number" ?_lG_ :typeof _lG_==="number"?_lH_:[2,_lH_,_lG_]; sleeper1_lB_[4]=_lI_; return 0;} t1_lx_[1]=_lC_; return unsafe_run_waiters_la_(sleeper1_lB_,_lC_);}} throw [0,_d_,_br_];}} function fast_connect_lR_(t_lJ_,state_lM_) {var t_lK_=repr_k$_(t_lJ_),_lL_=t_lK_[1]; {if(2===_lL_[0]) {var sleeper_lN_=_lL_[1]; t_lK_[1]=state_lM_; return unsafe_run_waiters_la_(sleeper_lN_,state_lM_);} throw [0,_d_,_bs_];}} function return_lS_(v_lO_){return [0,[0,v_lO_]];} var return_unit_mF_=[0,state_return_unit_bo_]; function fail_mk_(e_lT_){return [0,[1,e_lT_]];} function temp_mb_(t_lU_){return [0,[2,[0,[0,[0,t_lU_]],0,0,0]]];} function task_mG_(param_lW_) {var _lV_=[0,[2,[0,1,0,0,0]]];return [0,_lV_,_lV_];} function add_immutable_waiter_mm_(sleeper_lZ_,waiter_lX_) {var _lY_=[1,waiter_lX_], _l0_=sleeper_lZ_[2], _l1_=typeof _l0_==="number"?_lY_:[2,_lY_,_l0_]; sleeper_lZ_[2]=_l1_; return 0;} function on_cancel_mH_(t_l2_,f_l4_) {var _l3_=repr_k$_(t_l2_)[1]; switch(_l3_[0]) {case 1: if(_l3_[1][1]===Canceled_kn_)return call_unsafe_k4_(f_l4_,0);break; case 2: var sleeper_l5_=_l3_[1], handler_l6_=[0,current_data_ko_[1],f_l4_], _l7_=sleeper_l5_[4], _l8_=typeof _l7_==="number"?handler_l6_:[2,handler_l6_,_l7_]; sleeper_l5_[4]=_l8_; return 0; default:} return 0;} function _mI_(t_l9_,f_mh_) {var t_l__=repr_k$_(t_l9_),_l$_=t_l__[1]; switch(_l$_[0]) {case 1:var _ma_=[0,_l$_];break; case 2: var sleeper_md_=_l$_[1], res_mc_=temp_mb_(t_l__), data_mf_=current_data_ko_[1]; add_immutable_waiter_mm_ (sleeper_md_, function(state_me_) {switch(state_me_[0]) {case 0: var v_mg_=state_me_[1]; current_data_ko_[1]=data_mf_; try {var _mi_=_c7_(f_mh_,v_mg_),_mj_=_mi_;} catch(_ml_){var _mj_=fail_mk_(_ml_);} return connect_lQ_(res_mc_,_mj_); case 1:return fast_connect_lR_(res_mc_,state_me_); default:throw [0,_d_,_bu_];}}); var _ma_=res_mc_; break; case 3:throw [0,_d_,_bt_]; default:var _ma_=_c7_(f_mh_,_l$_[1]);} return _ma_;} function _mJ_(t_mn_,f_mw_) {var t_mo_=repr_k$_(t_mn_),_mp_=t_mo_[1]; switch(_mp_[0]) {case 1:var _mq_=[0,_mp_];break; case 2: var sleeper_ms_=_mp_[1], res_mr_=temp_mb_(t_mo_), data_mu_=current_data_ko_[1]; add_immutable_waiter_mm_ (sleeper_ms_, function(state_mt_) {switch(state_mt_[0]) {case 0: var v_mv_=state_mt_[1]; current_data_ko_[1]=data_mu_; try {var _mx_=[0,_c7_(f_mw_,v_mv_)],_my_=_mx_;} catch(_mz_){var _my_=[1,_mz_];} return fast_connect_lR_(res_mr_,_my_); case 1:return fast_connect_lR_(res_mr_,state_mt_); default:throw [0,_d_,_bw_];}}); var _mq_=res_mr_; break; case 3:throw [0,_d_,_bv_]; default: var v_mA_=_mp_[1]; try {var _mB_=[0,_c7_(f_mw_,v_mA_)],_mC_=_mB_;} catch(_mD_){var _mC_=[1,_mD_];} var _mq_=[0,_mC_];} return _mq_;} var pause_hook_mL_=[0,function(_mE_){return 0;}],_mK_=_km_(0),_mO_=[0,0]; function _m0_(param_mS_) {var _mM_=1-(_mK_[2]===_mK_?1:0); if(_mM_) {var tmp_mN_=_km_(0); tmp_mN_[1][2]=_mK_[2]; _mK_[2][1]=tmp_mN_[1]; tmp_mN_[1]=_mK_[1]; _mK_[1][2]=tmp_mN_; _mK_[1]=_mK_; _mK_[2]=_mK_; _mO_[1]=0; var curr_mP_=tmp_mN_[2]; for(;;) {var _mQ_=curr_mP_!==tmp_mN_?1:0; if(_mQ_) {if(curr_mP_[4])wakeup_lP_(curr_mP_[3],0); var _mR_=curr_mP_[2],curr_mP_=_mR_; continue;} return _mQ_;}} return _mM_;} function iter_s_mU_(f_mW_,l_mT_) {if(l_mT_) {var l_mV_=l_mT_[2], x_mY_=l_mT_[1], _mZ_=function(param_mX_){return iter_s_mU_(f_mW_,l_mV_);}; return _mI_(_c7_(f_mW_,x_mY_),_mZ_);} return return_unit_mF_;} var null_m1_=null,undefined_m2_=undefined; function _no_(x_m3_,f_m4_) {return x_m3_==null_m1_?null_m1_:_c7_(f_m4_,x_m3_);} function _nb_(x_m5_,f_m6_,g_m7_) {return x_m5_==null_m1_?_c7_(f_m6_,0):_c7_(g_m7_,x_m5_);} function _np_(x_m8_,f_m9_){return x_m8_==null_m1_?_c7_(f_m9_,0):x_m8_;} function _nq_(x_nc_) {function _na_(x_m__){return [0,x_m__];} return _nb_(x_nc_,function(param_m$_){return 0;},_na_);} function _nr_(x_nd_){return x_nd_!==undefined_m2_?1:0;} function _nm_(x_ne_,f_nf_,g_ng_) {return x_ne_===undefined_m2_?_c7_(f_nf_,0):_c7_(g_ng_,x_ne_);} function _ns_(x_nh_,f_ni_) {return x_nh_===undefined_m2_?_c7_(f_ni_,0):x_nh_;} function _nt_(x_nn_) {function _nl_(x_nj_){return [0,x_nj_];} return _nm_(x_nn_,function(param_nk_){return 0;},_nl_);} var _true_nu_=true, _false_nv_=false, regExp_nw_=RegExp, array_constructor_nx_=Array; function array_get_nC_(_ny_,_nz_){return _ny_[_nz_];} function str_array_nD_(_nA_){return _nA_;} function match_result_nE_(_nB_){return _nB_;} var date_constr_nF_=Date,math_nJ_=Math; function escape_nI_(s_nG_){return escape(s_nG_);} function _nK_(e_nH_) {return e_nH_ instanceof array_constructor_nx_ ?0 :[0,new MlWrappedString(e_nH_.toString())];} _jU_[1]=[0,_nK_,_jU_[1]]; function _nN_(_nL_){return _nL_;} function _nO_(_nM_){return _nM_;} function handler_nU_(f_nQ_) {return _nO_ (caml_js_wrap_callback (function(e_nP_) {if(e_nP_) {var res_nR_=_c7_(f_nQ_,e_nP_); if(!(res_nR_|0))e_nP_.preventDefault(); return res_nR_;} var _nS_=event,res_nT_=_c7_(f_nQ_,_nS_); _nS_.returnValue=res_nT_; return res_nT_;}));} var onIE_nV_=caml_js_on_ie(0)|0, window_nW_=window, document_nX_=window_nW_.document, html_element_nY_=window.HTMLElement, float32Array_n2_=window.Float32Array, _n0_= _nN_(html_element_nY_)===undefined_m2_ ?function(e_nZ_) {return _nN_(e_nZ_.innerHTML)===undefined_m2_?null_m1_:_nO_(e_nZ_);} :function(e_n1_) {return e_n1_ instanceof html_element_nY_?_nO_(e_n1_):null_m1_;}; function _n6_(tag_n3_,e_n4_) {var _n5_=tag_n3_.toString(); return e_n4_.tagName.toLowerCase()===_n5_?_nO_(e_n4_):null_m1_;} function _n9_(e_n7_){return _n6_(_bm_,e_n7_);} function _oa_(e_n8_){return _n6_(_bn_,e_n8_);} var _n$_=window.FileReader; pause_hook_mL_[1]= function(param_n__) {return 1===param_n__ ?(window_nW_.setTimeout(caml_js_wrap_callback(_m0_),0),0) :0;}; var _ob_=caml_js_get_console(0); function regexp_on_(s_oc_) {var _od_=_be_.toString(); return new regExp_nw_(caml_js_from_byte_string(s_oc_),_od_);} function string_match_oo_(r_oe_,s_og_,i_of_) {r_oe_.lastIndex=i_of_; var _oh_=r_oe_.exec(caml_js_from_byte_string(s_og_)), _oi_=_oh_==null_m1_?null_m1_:match_result_nE_(_oh_); return _nq_(_oi_);} function matched_group_op_(r_ok_,i_oj_) {var _ol_=array_get_nC_(r_ok_,i_oj_), _om_=_ol_===undefined_m2_?undefined_m2_:caml_js_to_byte_string(_ol_); return _nt_(_om_);} var quote_repl_re_oq_=new regExp_nw_(_bc_.toString(),_bd_.toString()), _os_=regexp_on_(_bb_), l_or_=window_nW_.location; function split_ov_(c_ot_,s_ou_) {return str_array_nD_(s_ou_.split(_d2_(1,c_ot_).toString()));} var Local_exn_ow_=[0,_au_]; function interrupt_oy_(param_ox_){throw [0,Local_exn_ow_];} var af2e6a4db_oz_=caml_js_from_byte_string(_at_), _oA_= regexp_on_ (caml_js_to_byte_string(af2e6a4db_oz_.replace(_os_,_bg_.toString()))); function urldecode_js_string_string_oI_(s_oB_) {return caml_js_to_byte_string(unescape(s_oB_));} function urlencode_oJ_(_opt__oC_,s_oE_) {var with_plus_oD_=_opt__oC_?_opt__oC_[1]:1; if(with_plus_oD_) {var _oF_= caml_js_to_byte_string(escape_nI_(caml_js_from_byte_string(s_oE_))); _oA_.lastIndex=0; var a41432fb9_oG_=caml_js_from_byte_string(_oF_), a11bb050d_oH_=caml_js_from_byte_string(_av_); return caml_js_to_byte_string (a41432fb9_oG_.replace (_oA_, a11bb050d_oH_.replace(quote_repl_re_oq_,_bf_.toString())));} return caml_js_to_byte_string (escape_nI_(caml_js_from_byte_string(s_oE_)));} var Not_an_http_protocol_pk_=[0,_as_]; function path_of_path_string_oQ_(s_oK_) {try {var length_oL_=s_oK_.getLen(); if(0===length_oL_) var _oM_=_ba_; else {var i_oN_=0,_oP_=47,_oO_=s_oK_.getLen(); for(;;) {if(_oO_<=i_oN_)throw [0,_c_]; if(s_oK_.safeGet(i_oN_)!==_oP_) {var _oT_=i_oN_+1|0,i_oN_=_oT_;continue;} if(0===i_oN_) var _oR_= [0,_a$_,path_of_path_string_oQ_(_d3_(s_oK_,1,length_oL_-1|0))]; else {var _oS_= path_of_path_string_oQ_ (_d3_(s_oK_,i_oN_+1|0,(length_oL_-i_oN_|0)-1|0)), _oR_=[0,_d3_(s_oK_,0,i_oN_),_oS_];} var _oM_=_oR_; break;}}} catch(_oU_){if(_oU_[1]===_c_)return [0,s_oK_,0];throw _oU_;} return _oM_;} function encode_arguments_pl_(l_oY_) {return _d5_ (_aC_, _dy_ (function(param_oV_) {var n_oW_=param_oV_[1], _oX_=_cH_(_aD_,urlencode_oJ_(0,param_oV_[2])); return _cH_(urlencode_oJ_(0,n_oW_),_oX_);}, l_oY_));} function decode_arguments_js_string_pm_(s_oZ_) {var arr_o0_=split_ov_(38,s_oZ_),len_pj_=arr_o0_.length; function aux_pf_(acc_pe_,idx_o1_) {var idx_o2_=idx_o1_; for(;;) {if(0<=idx_o2_) {try {var _pc_=idx_o2_-1|0, _pd_= function(s_o9_) {function _o$_(param_o3_) {var y_o7_=param_o3_[2],x_o6_=param_o3_[1]; function get_o5_(t_o4_) {return urldecode_js_string_string_oI_ (_ns_(t_o4_,interrupt_oy_));} var _o8_=get_o5_(y_o7_); return [0,get_o5_(x_o6_),_o8_];} var arr_bis_o__=split_ov_(61,s_o9_); if(2===arr_bis_o__.length) {var _pa_=array_get_nC_(arr_bis_o__,1), _pb_=_nN_([0,array_get_nC_(arr_bis_o__,0),_pa_]);} else var _pb_=undefined_m2_; return _nm_(_pb_,interrupt_oy_,_o$_);}, _pg_= aux_pf_ ([0, _nm_(array_get_nC_(arr_o0_,idx_o2_),interrupt_oy_,_pd_), acc_pe_], _pc_);} catch(_ph_) {if(_ph_[1]===Local_exn_ow_) {var _pi_=idx_o2_-1|0,idx_o2_=_pi_;continue;} throw _ph_;} return _pg_;} return acc_pe_;}} return aux_pf_(0,len_pj_-1|0);} var url_re_pn_=new regExp_nw_(caml_js_from_byte_string(_ar_)), file_re_pY_=new regExp_nw_(caml_js_from_byte_string(_aq_)); function string_of_url_pX_(param_po_) {switch(param_po_[0]) {case 1: var match_pp_=param_po_[1], frag_pq_=match_pp_[6], args_pr_=match_pp_[5], port_ps_=match_pp_[2], path_pv_=match_pp_[3], host_pu_=match_pp_[1], _pt_= caml_string_notequal(frag_pq_,_a0_) ?_cH_(_aZ_,urlencode_oJ_(0,frag_pq_)) :_aY_, _pw_=args_pr_?_cH_(_aX_,encode_arguments_pl_(args_pr_)):_aW_, _py_=_cH_(_pw_,_pt_), _pA_= _cH_ (_aU_, _cH_ (_d5_ (_aV_, _dy_ (function(eta_px_){return urlencode_oJ_(0,eta_px_);}, path_pv_)), _py_)), _pz_=443===port_ps_?_aS_:_cH_(_aT_,string_of_int_cQ_(port_ps_)), _pB_=_cH_(_pz_,_pA_); return _cH_(_aR_,_cH_(urlencode_oJ_(0,host_pu_),_pB_)); case 2: var match_pC_=param_po_[1], frag_pD_=match_pC_[4], args_pE_=match_pC_[3], path_pG_=match_pC_[1], _pF_= caml_string_notequal(frag_pD_,_aQ_) ?_cH_(_aP_,urlencode_oJ_(0,frag_pD_)) :_aO_, _pH_=args_pE_?_cH_(_aN_,encode_arguments_pl_(args_pE_)):_aM_, _pJ_=_cH_(_pH_,_pF_); return _cH_ (_aK_, _cH_ (_d5_ (_aL_, _dy_ (function(eta_pI_){return urlencode_oJ_(0,eta_pI_);}, path_pG_)), _pJ_)); default: var match_pK_=param_po_[1], frag_pL_=match_pK_[6], args_pM_=match_pK_[5], port_pN_=match_pK_[2], path_pQ_=match_pK_[3], host_pP_=match_pK_[1], _pO_= caml_string_notequal(frag_pL_,_a__) ?_cH_(_a9_,urlencode_oJ_(0,frag_pL_)) :_a8_, _pR_=args_pM_?_cH_(_a7_,encode_arguments_pl_(args_pM_)):_a6_, _pT_=_cH_(_pR_,_pO_), _pV_= _cH_ (_a4_, _cH_ (_d5_ (_a5_, _dy_ (function(eta_pS_){return urlencode_oJ_(0,eta_pS_);}, path_pQ_)), _pT_)), _pU_=80===port_pN_?_a2_:_cH_(_a3_,string_of_int_cQ_(port_pN_)), _pW_=_cH_(_pU_,_pV_); return _cH_(_a1_,_cH_(urlencode_oJ_(0,host_pP_),_pW_));}} urldecode_js_string_string_oI_(l_or_.hostname); try {caml_int_of_string(caml_js_to_byte_string(l_or_.port));} catch(_pZ_){if(_pZ_[1]!==_a_)throw _pZ_;} path_of_path_string_oQ_(urldecode_js_string_string_oI_(l_or_.pathname)); decode_arguments_js_string_pm_(l_or_.search); urldecode_js_string_string_oI_(l_or_.href); var formData_p7_=window.FormData; function _p6_(form_contents_p0_,form_elt_p2_) {if(891486873<=form_contents_p0_[1]) {var list_p1_=form_contents_p0_[2]; list_p1_[1]=[0,form_elt_p2_,list_p1_[1]]; return 0;} var f_p3_=form_contents_p0_[2], _p4_=form_elt_p2_[2], _p5_=form_elt_p2_[1]; return 781515420<=_p4_[1] ?f_p3_.append(_p5_.toString(),_p4_[2]) :f_p3_.append(_p5_.toString(),_p4_[2]);} function _p9_(param_p8_){return ActiveXObject;} var _qH_=[0,_N_]; function error_qe_(f_p$_) {return _f4_ (_jR_, function(s_p__) {_ob_.error(s_p__.toString());return _j_(s_p__);}, f_p$_);} function debug_qI_(f_qb_) {return _f4_ (_jR_,function(s_qa_){return _ob_.log(s_qa_.toString());},f_qb_);} function check_error_qJ_(gl_qc_) {var _qd_=gl_qc_.NO; return caml_notequal(gl_qc_.getError(),_qd_)?error_qe_(_m_):0;} function load_shader_qK_(gl_qf_,shader_qh_,text_qg_) {gl_qf_.shaderSource(shader_qh_,text_qg_); gl_qf_.compileShader(shader_qh_); if(gl_qf_.getShaderParameter(shader_qh_,gl_qf_.COMPILE_STATUS)|0) return 0; var _qi_=new MlWrappedString(gl_qf_.getShaderInfoLog(shader_qh_)); return _fz_(error_qe_,_p_,new MlWrappedString(text_qg_),_qi_);} function get_source_qL_(src_id_qj_) {function _ql_(param_qk_){return _f4_(error_qe_,_r_,src_id_qj_);} return _np_ (_no_(document_nX_.getElementById(src_id_qj_.toString()),_oa_), _ql_).text;} function float32array_qM_(a_qm_) {var array_qn_=new float32Array_n2_(a_qm_.length-1), _qo_=0, _qp_=a_qm_.length-1-1|0; if(!(_qp_<_qo_)) {var i_qq_=_qo_; for(;;) {array_qn_[i_qq_]=a_qm_[i_qq_+1]; var _qr_=i_qq_+1|0; if(_qp_!==i_qq_){var i_qq_=_qr_;continue;} break;}} return array_qn_;} function _qx_(i_qs_,j_qt_){return (i_qs_*4|0)+j_qt_|0;} function _qN_(m1_qA_,m2_qy_) {return _dn_ (16, function(p_qu_) {var _qv_=p_qu_%4|0, _qw_=p_qu_/4|0, _qz_=caml_array_get(m2_qy_,_qx_(3,_qv_)), _qB_=caml_array_get(m1_qA_,_qx_(_qw_,3))*_qz_, _qC_=caml_array_get(m2_qy_,_qx_(2,_qv_)), _qD_=caml_array_get(m1_qA_,_qx_(_qw_,2))*_qC_, _qE_=caml_array_get(m2_qy_,_qx_(1,_qv_)), _qF_=caml_array_get(m1_qA_,_qx_(_qw_,1))*_qE_, _qG_=caml_array_get(m2_qy_,_qx_(0,_qv_)); return caml_array_get(m1_qA_,_qx_(_qw_,0))* _qG_+ _qF_+ _qD_+ _qB_;});} var line_regexp_qO_=regexp_on_(_l_),couple_regexp_qQ_=regexp_on_(_k_); function read_coord_couple_re_(c_qP_) {var _qR_=string_match_oo_(couple_regexp_qQ_,c_qP_,0); if(_qR_) {var _qS_=_dy_(_c7_(matched_group_op_,_qR_[1]),_s_); if(_qS_) {var _qT_=_qS_[1]; if(_qT_) {var _qU_=_qS_[2]; if(_qU_) {var _qV_=_qU_[1]; if(_qV_&&!_qU_[2]) {var v_qW_=_qT_[1],_qX_=caml_int_of_string(_qV_[1]); return [0,[0,caml_int_of_string(v_qW_),_qX_]];}}}} return 0;} return 0;} function concat_rd_(a_q0_) {var r_qY_=[0,0],_qZ_=0,_q1_=a_q0_.length-1-1|0; if(!(_q1_<_qZ_)) {var i_q2_=_qZ_; a: for(;;) {var len_q3_=0,param_q4_=a_q0_[i_q2_+1],_q7_=r_qY_[1]; for(;;) {if(param_q4_) {var l_q6_=param_q4_[2], _q5_=len_q3_+1|0, len_q3_=_q5_, param_q4_=l_q6_; continue;} r_qY_[1]=_q7_+len_q3_|0; var _q8_=i_q2_+1|0; if(_q1_!==i_q2_){var i_q2_=_q8_;continue a;} break;} break;}} var pos_q9_=[0,-1],l_q__=[0,0],_rc_=r_qY_[1]; return _dn_ (_rc_, function(param_rb_) {for(;;) {var _q$_=l_q__[1]; if(_q$_){var t_ra_=_q$_[1];l_q__[1]=_q$_[2];return t_ra_;} pos_q9_[1]+=1; l_q__[1]=caml_array_get(a_q0_,pos_q9_[1]); continue;}});} var pi_rI_=4*Math.atan(1); function start_vM_(param_rf_) {var pos_rg_=param_rf_[1], norm_ri_=param_rf_[2], fps_text_rh_=document_nX_.createTextNode(_I_.toString()), _rj_=_no_(document_nX_.getElementById(_H_.toString()),_n0_); if(_rj_!=null_m1_)_rj_.appendChild(fps_text_rh_); function _rl_(param_rk_){return _f4_(error_qe_,_n_,_g_);} var canvas_rm_= _np_(_no_(document_nX_.getElementById(_g_.toString()),_n9_),_rl_); function _rs_(param_ro_) {return _f4_ (_jR_, function(s_rn_) {window_nW_.alert(s_rn_.toString());return _j_(s_rn_);}, _o_);} try {var ctx_rp_=canvas_rm_.getContext(_M_.toString()), _rq_= 1-(ctx_rp_==null_m1_?1:0) ?ctx_rp_ :canvas_rm_.getContext(_L_.toString()), _rr_=_rq_;} catch(_sb_){var _rr_=null_m1_;} var gl_rt_=_np_(_rr_,_rs_), _ru_=get_source_qL_(_G_), _rv_=get_source_qL_(_F_), vertexShader_rw_=gl_rt_.createShader(gl_rt_.VERTEX_SHADER), fragmentShader_rx_=gl_rt_.createShader(gl_rt_.FRAGMENT_SHADER); load_shader_qK_(gl_rt_,vertexShader_rw_,_rv_); load_shader_qK_(gl_rt_,fragmentShader_rx_,_ru_); var prog_ry_=gl_rt_.createProgram(); gl_rt_.attachShader(prog_ry_,vertexShader_rw_); gl_rt_.attachShader(prog_ry_,fragmentShader_rx_); gl_rt_.linkProgram(prog_ry_); if(!(gl_rt_.getProgramParameter(prog_ry_,gl_rt_.LINK_STATUS)|0)) error_qe_(_q_); gl_rt_.useProgram(prog_ry_); check_error_qJ_(gl_rt_); debug_qI_(_E_); gl_rt_.enable(gl_rt_.DEPTH_TEST); gl_rt_.depthFunc(gl_rt_.LESS); var proj_loc_rz_=gl_rt_.getUniformLocation(prog_ry_,_D_.toString()), lightPos_loc_rA_=gl_rt_.getUniformLocation(prog_ry_,_C_.toString()), ambientLight_loc_rB_=gl_rt_.getUniformLocation(prog_ry_,_B_.toString()), lightPos_rC_=float32array_qM_([-1,3,0,-1]), ambientLight_rD_=float32array_qM_([-1,0.1,0.1,0.1]); gl_rt_.uniform3fv(lightPos_loc_rA_,lightPos_rC_); gl_rt_.uniform3fv(ambientLight_loc_rB_,ambientLight_rD_); var pos_attr_rE_=gl_rt_.getAttribLocation(prog_ry_,_A_.toString()); gl_rt_.enableVertexAttribArray(pos_attr_rE_); var array_buffer_rF_=gl_rt_.createBuffer(); gl_rt_.bindBuffer(gl_rt_.ARRAY_BUFFER,array_buffer_rF_); gl_rt_.bufferData(gl_rt_.ARRAY_BUFFER,pos_rg_,gl_rt_.STATIC_DRAW); gl_rt_.vertexAttribPointer(pos_attr_rE_,3,gl_rt_.FLOAT,_false_nv_,0,0); var norm_attr_rG_=gl_rt_.getAttribLocation(prog_ry_,_z_.toString()); gl_rt_.enableVertexAttribArray(norm_attr_rG_); var norm_buffer_rH_=gl_rt_.createBuffer(); gl_rt_.bindBuffer(gl_rt_.ARRAY_BUFFER,norm_buffer_rH_); gl_rt_.bufferData(gl_rt_.ARRAY_BUFFER,norm_ri_,gl_rt_.STATIC_DRAW); gl_rt_.vertexAttribPointer(norm_attr_rG_,3,gl_rt_.FLOAT,_false_nv_,0,0); var _rJ_=pi_rI_/2, mat_rK_= _qN_ ([-1, 1, 0, 0, 0, 0, Math.cos(_rJ_), Math.sin(_rJ_), 0, 0, -Math.sin(_rJ_), Math.cos(_rJ_), 0, 0, 0, 0, 1], _qN_ ([-1,0.5,0,0,0,0,0.5,0,0,0,0,0.5,0,0,0,0,1], [-1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])); check_error_qJ_(gl_rt_); debug_qI_(_y_); function get_time_rM_(param_rL_) {return new date_constr_nF_().getTime();} var last_draw_rN_=[0,get_time_rM_(0)],draw_times_rO_=_ec_(0); function f_r$_(param_sa_) {var _rP_=1*(new date_constr_nF_().getTime()/1000); gl_rt_.uniformMatrix4fv (proj_loc_rz_, _false_nv_, float32array_qM_ (_qN_ (mat_rK_, [-1, Math.cos(_rP_), 0, -Math.sin(_rP_), 0, 0, 1, 0, 0, Math.sin(_rP_), 0, Math.cos(_rP_), 0, 0, 0, 0, 1]))); gl_rt_.clear(gl_rt_.DEPTH_BUFFER_BIT|gl_rt_.COLOR_BUFFER_BIT); gl_rt_.drawArrays(gl_rt_.TRIANGLES,0,pos_rg_.length/3|0); check_error_qJ_(gl_rt_); var now_rQ_=get_time_rM_(0),_rR_=now_rQ_-last_draw_rN_[1]; if(0===draw_times_rO_[1]) {var cell_rS_=[]; caml_update_dummy(cell_rS_,[0,_rR_,cell_rS_]); draw_times_rO_[1]=1; draw_times_rO_[2]=cell_rS_;} else {var tail_rT_=draw_times_rO_[2],cell_rU_=[0,_rR_,tail_rT_[2]]; draw_times_rO_[1]=draw_times_rO_[1]+1|0; tail_rT_[2]=cell_rU_; draw_times_rO_[2]=cell_rU_;} last_draw_rN_[1]=now_rQ_; if(50<_eg_(draw_times_rO_))_ef_(draw_times_rO_); var _rV_=0,_rW_=_eg_(draw_times_rO_),_r3_=1000; if(0===draw_times_rO_[1]) var _rX_=_rV_; else {var tail_rY_=draw_times_rO_[2],accu_rZ_=_rV_,cell_r0_=tail_rY_[2]; for(;;) {var _r1_=accu_rZ_+cell_r0_[1]; if(cell_r0_!==tail_rY_) {var _r2_=cell_r0_[2],accu_rZ_=_r1_,cell_r0_=_r2_;continue;} var _rX_=_r1_; break;}} fps_text_rh_.data=_f4_(_jT_,_J_,1/_rX_*_rW_*_r3_).toString(); var match_r4_=task_mG_(0), t_r5_=match_r4_[1], w_r6_=match_r4_[2], _r8_=0.02*1000, id_r9_= window_nW_.setTimeout (caml_js_wrap_callback (function(param_r7_){return wakeup_lP_(w_r6_,0);}), _r8_); on_cancel_mH_ (t_r5_,function(param_r__){return window_nW_.clearTimeout(id_r9_);}); return _mI_(t_r5_,f_r$_);} return f_r$_(0);} window_nW_.onload= handler_nU_ (function(param_v1_) {function _sd_(exn_sc_){return _f4_(error_qe_,_K_,_kj_(exn_sc_));} try {var _s$_=0, _ta_=0, _tb_=0, _tc_=0, _td_=0, _te_=0, _tg_= function(frame_se_) {var a_sf_= str_array_nD_(frame_se_[4].toString().split(_x_.toString())); window_nW_.arr=a_sf_; var vertex_sg_=[0,0],norm_sh_=[0,0],face_si_=[0,0],i_sj_=0; for(;;) {var _sk_=_nt_(array_get_nC_(a_sf_,i_sj_)); if(_sk_) {var _sl_= string_match_oo_ (line_regexp_qO_,new MlWrappedString(_sk_[1]),0); if(_sl_) {var _sm_=_dy_(_c7_(matched_group_op_,_sl_[1]),_w_); if(_sm_) {var _sn_=_sm_[1]; if(_sn_) {var _so_=_sn_[1]; if(caml_string_notequal(_so_,_v_)) if(caml_string_notequal(_so_,_u_)) if(caml_string_notequal(_so_,_t_)) var _sp_=0; else {var _sq_=_sm_[2]; if(_sq_) {var _sr_=_sq_[1]; if(_sr_) {var _ss_=_sq_[2]; if(_ss_) {var _st_=_ss_[1]; if(_st_) {var _su_=_ss_[2]; if(_su_) {var _sv_=_su_[1]; if(_sv_&&!_su_[2]) {var _sw_= [0, [1, [0, caml_float_of_string(_sr_[1]), caml_float_of_string(_st_[1]), caml_float_of_string(_sv_[1])]]], _sp_=1;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else {var _sx_=_sm_[2]; if(_sx_) {var _sy_=_sx_[1]; if(_sy_) {var _sz_=_sx_[2]; if(_sz_) {var _sA_=_sz_[1]; if(_sA_) {var _sB_=_sz_[2]; if(_sB_) {var _sC_=_sB_[1]; if(_sC_&&!_sB_[2]) {var _sw_= [0, [0, [0, caml_float_of_string(_sy_[1]), caml_float_of_string(_sA_[1]), caml_float_of_string(_sC_[1])]]], _sp_=1;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else {var _sD_=_sm_[2]; if(_sD_) {var _sE_=_sD_[1]; if(_sE_) {var _sF_=_sD_[2]; if(_sF_) {var _sG_=_sF_[1]; if(_sG_) {var _sH_=_sF_[2]; if(_sH_) {var _sI_=_sH_[1]; if(_sI_&&!_sH_[2]) {var _sJ_= _dy_ (read_coord_couple_re_, [0,_sE_[1],[0,_sG_[1],[0,_sI_[1],0]]]); if(_sJ_) {var _sK_=_sJ_[1]; if(_sK_) {var _sL_=_sJ_[2]; if(_sL_) {var _sM_=_sL_[1]; if(_sM_) {var _sN_=_sL_[2]; if(_sN_) {var _sO_=_sN_[1]; if(_sO_&&!_sN_[2]) {var _sw_=[0,[2,[0,_sK_[1],_sM_[1],_sO_[1]]]],_sp_=1,_sP_=0;} else var _sP_=1;} else var _sP_=1;} else var _sP_=1;} else var _sP_=1;} else var _sP_=1;} else var _sP_=1; if(_sP_){var _sw_=0,_sp_=1;}} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;} else var _sp_=0;}} else var _sp_=0;} else var _sp_=0; if(!_sp_)var _sw_=0;} else var _sw_=0; if(_sw_) {var _sQ_=_sw_[1]; switch(_sQ_[0]) {case 1: var match_sR_=_sQ_[1]; norm_sh_[1]= [0,[0,match_sR_[1],match_sR_[2],match_sR_[3]],norm_sh_[1]]; break; case 2: var match_sS_=_sQ_[1]; face_si_[1]= [0,[0,match_sS_[1],match_sS_[2],match_sS_[3]],face_si_[1]]; break; default: var match_sT_=_sQ_[1]; vertex_sg_[1]= [0,[0,match_sT_[1],match_sT_[2],match_sT_[3]],vertex_sg_[1]];}} var _sU_=i_sj_+1|0,i_sj_=_sU_; continue;} var _sV_=_dp_(_dE_(face_si_[1])), _sW_=_dp_(_dE_(norm_sh_[1])), _sX_=_dp_(_dE_(vertex_sg_[1])), vertex__s8_= _dn_ (_sV_.length-1, function(i_sY_) {var _sZ_=caml_array_get(_sV_,i_sY_), match_s0_=caml_array_get(_sX_,_sZ_[1][1]-1|0), match_s1_=caml_array_get(_sX_,_sZ_[2][1]-1|0), match_s2_=caml_array_get(_sX_,_sZ_[3][1]-1|0); return [0, match_s0_[1], [0, match_s0_[2], [0, match_s0_[3], [0, match_s1_[1], [0, match_s1_[2], [0, match_s1_[3], [0,match_s2_[1],[0,match_s2_[2],[0,match_s2_[3],0]]]]]]]]];}), norm__s9_= _dn_ (_sV_.length-1, function(i_s3_) {var _s4_=caml_array_get(_sV_,i_s3_), match_s5_=caml_array_get(_sW_,_s4_[1][2]-1|0), match_s6_=caml_array_get(_sW_,_s4_[2][2]-1|0), match_s7_=caml_array_get(_sW_,_s4_[3][2]-1|0); return [0, match_s5_[1], [0, match_s5_[2], [0, match_s5_[3], [0, match_s6_[1], [0, match_s6_[2], [0, match_s6_[3], [0,match_s7_[1],[0,match_s7_[2],[0,match_s7_[3],0]]]]]]]]];}), vertex_s__=float32array_qM_(concat_rd_(vertex__s8_)); return [0,vertex_s__,float32array_qM_(concat_rd_(norm__s9_))];}}, headers_tf_=_te_?_te_[1]:0, get_args_th_=_tb_?_tb_[1]:0, check_headers_ti_=_s$_?_s$_[1]:function(param_tj_,_tk_){return 1;}; if(_ta_) {var form_arg_tl_=_ta_[1]; if(_tc_) {var post_args_tn_=_tc_[1]; _dF_ (function(param_tm_) {return _p6_ (form_arg_tl_, [0,param_tm_[1],[0,-976970511,param_tm_[2].toString()]]);}, post_args_tn_);} var form_arg_to_=[0,form_arg_tl_];} else if(_tc_) {var post_args_tp_=_tc_[1], _tq_=_nt_(_nN_(formData_p7_)), contents_tr_= _tq_?[0,808620462,new (_tq_[1])()]:[0,891486873,[0,0]]; _dF_ (function(param_ts_) {return _p6_ (contents_tr_, [0,param_ts_[1],[0,-976970511,param_ts_[2].toString()]]);}, post_args_tp_); var form_arg_to_=[0,contents_tr_];} else var form_arg_to_=0; if(form_arg_to_) {var _tt_=form_arg_to_[1]; if(_td_) var _tu_=[0,_ao_,_td_,126925477]; else {if(891486873<=_tt_[1]) {var yes_tv_=0,no_tw_=0,param_tx_=_tt_[2][1]; for(;;) {if(param_tx_) {var l_ty_=param_tx_[2], x_tz_=param_tx_[1], _tA_=781515420<=x_tz_[2][1]?0:1; if(_tA_) {var _tB_=[0,x_tz_,yes_tv_],yes_tv_=_tB_,param_tx_=l_ty_; continue;} var _tC_=[0,x_tz_,no_tw_],no_tw_=_tC_,param_tx_=l_ty_; continue;} var _tD_=_dE_(no_tw_); _dE_(yes_tv_); if(_tD_) {var nine_digits_tF_= function(param_tE_) {return string_of_int_cQ_(math_nJ_.random()*1000000000|0);}, _tG_=nine_digits_tF_(0), _tH_=_cH_(_S_,_cH_(nine_digits_tF_(0),_tG_)), _tI_=[0,_am_,[0,_cH_(_an_,_tH_)],[0,164354597,_tH_]];} else var _tI_=_al_; var _tJ_=_tI_; break;}} else var _tJ_=_ak_; var _tu_=_tJ_;} var match_tK_=_tu_;} else var match_tK_=[0,_aj_,_td_,126925477]; var post_encode_tL_=match_tK_[3], content_type_tM_=match_tK_[2], method__tO_=match_tK_[1], _tN_=caml_js_from_byte_string(_f_), _ul_= function(handle_tP_) {var res_tQ_=match_result_nE_(handle_tP_), _tR_= caml_js_to_byte_string (_ns_(array_get_nC_(res_tQ_,1),interrupt_oy_).toLowerCase()); if (caml_string_notequal(_tR_,_aB_)&& caml_string_notequal(_tR_,_aA_)) {if (caml_string_notequal(_tR_,_az_)&& caml_string_notequal(_tR_,_ay_)) {if (caml_string_notequal(_tR_,_ax_)&& caml_string_notequal(_tR_,_aw_)) {var _tT_=1,_tS_=0;} else var _tS_=1; if(_tS_){var ssl_tU_=1,_tT_=2;}} else var _tT_=0; switch(_tT_) {case 1:var _tV_=0;break; case 2:var _tV_=1;break; default:var ssl_tU_=0,_tV_=1;} if(_tV_) {var path_str_tW_= urldecode_js_string_string_oI_ (_ns_(array_get_nC_(res_tQ_,5),interrupt_oy_)), _tY_= function(param_tX_){return caml_js_from_byte_string(_aF_);}, _t0_= urldecode_js_string_string_oI_ (_ns_(array_get_nC_(res_tQ_,9),_tY_)), _t1_= function(param_tZ_){return caml_js_from_byte_string(_aG_);}, _t2_= decode_arguments_js_string_pm_ (_ns_(array_get_nC_(res_tQ_,7),_t1_)), _t4_=path_of_path_string_oQ_(path_str_tW_), _t5_= function(param_t3_){return caml_js_from_byte_string(_aH_);}, _t6_= caml_js_to_byte_string(_ns_(array_get_nC_(res_tQ_,4),_t5_)), _t7_= caml_string_notequal(_t6_,_aE_) ?caml_int_of_string(_t6_) :ssl_tU_?443:80, url_t8_= [0, urldecode_js_string_string_oI_ (_ns_(array_get_nC_(res_tQ_,2),interrupt_oy_)), _t7_, _t4_, path_str_tW_, _t2_, _t0_], _t9_=ssl_tU_?[1,url_t8_]:[0,url_t8_]; return [0,_t9_];}} throw [0,Not_an_http_protocol_pk_];}, _um_= function(param_uk_) {function _ui_(handle_t__) {var res_t$_=match_result_nE_(handle_t__), path_str_ua_= urldecode_js_string_string_oI_ (_ns_(array_get_nC_(res_t$_,2),interrupt_oy_)); function _uc_(param_ub_) {return caml_js_from_byte_string(_aI_);} var _ue_= caml_js_to_byte_string(_ns_(array_get_nC_(res_t$_,6),_uc_)); function _uf_(param_ud_) {return caml_js_from_byte_string(_aJ_);} var _ug_= decode_arguments_js_string_pm_ (_ns_(array_get_nC_(res_t$_,4),_uf_)); return [0, [2, [0, path_of_path_string_oQ_(path_str_ua_), path_str_ua_, _ug_, _ue_]]];} function _uj_(param_uh_){return 0;} return _nb_(file_re_pY_.exec(_tN_),_uj_,_ui_);}, _un_=_nb_(url_re_pn_.exec(_tN_),_um_,_ul_); if(_un_) {var _uo_=_un_[1]; switch(_uo_[0]) {case 0: var url_up_=_uo_[1],_uq_=url_up_.slice(),_ur_=url_up_[5]; _uq_[5]=0; var match_us_=[0,string_of_url_pX_([0,_uq_]),_ur_],_ut_=1; break; case 1: var url_uu_=_uo_[1],_uv_=url_uu_.slice(),_uw_=url_uu_[5]; _uv_[5]=0; var match_us_=[0,string_of_url_pX_([1,_uv_]),_uw_],_ut_=1; break; default:var _ut_=0;}} else var _ut_=0; if(!_ut_)var match_us_=[0,_f_,0]; var url_ux_=match_us_[1], _uy_=_cN_(match_us_[2],get_args_th_), url_uz_= _uy_?_cH_(url_ux_,_cH_(_ai_,encode_arguments_pl_(_uy_))):url_ux_, match_uA_=task_mG_(0), w_uB_=match_uA_[2], res_uC_=match_uA_[1]; try {var _uD_=new XMLHttpRequest(),req_uE_=_uD_;} catch(_vP_) {try {var a5f6575ba_uF_=_p9_(0), _uG_=new a5f6575ba_uF_(_R_.toString()), req_uE_=_uG_;} catch(_uN_) {try {var a64f1392a_uH_=_p9_(0), _uI_=new a64f1392a_uH_(_Q_.toString()), req_uE_=_uI_;} catch(_uM_) {try {var a30a5da5a_uJ_=_p9_(0), _uK_=new a30a5da5a_uJ_(_P_.toString());} catch(_uL_){throw [0,_d_,_O_];} var req_uE_=_uK_;}}} req_uE_.open(method__tO_.toString(),url_uz_.toString(),_true_nu_); if(content_type_tM_) req_uE_.setRequestHeader (_ah_.toString(),content_type_tM_[1].toString()); _dF_ (function(param_uO_) {return req_uE_.setRequestHeader (param_uO_[1].toString(),param_uO_[2].toString());}, headers_tf_); var headers_uU_= function(s_uS_) {function _uR_(v_uP_){return [0,new MlWrappedString(v_uP_)];} function _uT_(param_uQ_){return 0;} return _nb_ (req_uE_.getResponseHeader(caml_js_from_byte_string(s_uS_)), _uT_, _uR_);}, checked_uV_=[0,0], do_check_headers_uY_= function(param_uX_) {var _uW_= checked_uV_[1] ?0 :_f4_(check_headers_ti_,req_uE_.status,headers_uU_) ?0 :(wakeup_result_ln_ (w_uB_,[1,[0,_qH_,[0,req_uE_.status,headers_uU_]]]), req_uE_.abort(), 1); _uW_; checked_uV_[1]=1; return 0;}; req_uE_.onreadystatechange= caml_js_wrap_callback (function(param_u3_) {switch(req_uE_.readyState) {case 2:if(!onIE_nV_)return do_check_headers_uY_(0);break; case 3:if(onIE_nV_)return do_check_headers_uY_(0);break; case 4: do_check_headers_uY_(0); var _u2_= function(param_u1_) {var _uZ_=_nq_(req_uE_.responseXML); if(_uZ_) {var doc_u0_=_uZ_[1]; return _nO_(doc_u0_.documentElement)===null_m1_ ?0 :[0,doc_u0_];} return 0;}; return wakeup_lP_ (w_uB_, [0, url_uz_, req_uE_.status, headers_uU_, new MlWrappedString(req_uE_.responseText), _u2_]); default:} return 0;}); if(form_arg_to_) {var _u4_=form_arg_to_[1]; if(891486873<=_u4_[1]) {var l_u5_=_u4_[2]; if(typeof post_encode_tL_==="number") {var _u$_=l_u5_[1]; req_uE_.send (_nO_ (_d5_ (_ae_, _dy_ (function(param_u6_) {var _u7_=param_u6_[2],_u8_=param_u6_[1]; if(781515420<=_u7_[1]) {var _u9_= _cH_ (_ag_,urlencode_oJ_(0,new MlWrappedString(_u7_[2].name))); return _cH_(urlencode_oJ_(0,_u8_),_u9_);} var _u__= _cH_(_af_,urlencode_oJ_(0,new MlWrappedString(_u7_[2]))); return _cH_(urlencode_oJ_(0,_u8_),_u__);}, _u$_)).toString ()));} else {var boundary_va_=post_encode_tL_[2], _vd_= function(data_vb_) {var data_vc_=_nO_(data_vb_.join(_ap_.toString())); return _nr_(req_uE_.sendAsBinary) ?req_uE_.sendAsBinary(data_vc_) :req_uE_.send(data_vc_);}, _vf_=l_u5_[1], b_ve_=new array_constructor_nx_(), _vK_= function(param_vg_) {b_ve_.push(_cH_(_T_,_cH_(boundary_va_,_U_)).toString()); return b_ve_;}; _mJ_ (_mJ_ (iter_s_mU_ (function(v_vh_) {b_ve_.push(_cH_(_Y_,_cH_(boundary_va_,_Z_)).toString()); var _vi_=v_vh_[2],_vj_=v_vh_[1]; if(781515420<=_vi_[1]) {var value_vk_=_vi_[2], _vr_=-1041425454, _vs_= function(file_vq_) {var _vn_=_ad_.toString(), _vm_=_ac_.toString(), _vl_=_nt_(value_vk_.name); if(_vl_) var _vo_=_vl_[1]; else {var _vp_=_nt_(value_vk_.fileName), _vo_=_vp_?_vp_[1]:_j_(_bh_);} b_ve_.push (_cH_(_aa_,_cH_(_vj_,_ab_)).toString(),_vo_,_vm_,_vn_); b_ve_.push(___.toString(),file_vq_,_$_.toString()); return return_lS_(0);}, _vt_=_nt_(_nN_(_n$_)); if(_vt_) {var reader_vu_=new (_vt_[1])(), match_vv_=task_mG_(0), res_vw_=match_vv_[1], w_vA_=match_vv_[2]; reader_vu_.onloadend= handler_nU_ (function(param_vB_) {if(2===reader_vu_.readyState) {var _vx_=reader_vu_.result, _vy_= caml_equal(typeof _vx_,_bi_.toString())?_nO_(_vx_):null_m1_, _vz_=_nq_(_vy_); if(!_vz_)throw [0,_d_,_bj_]; wakeup_lP_(w_vA_,_vz_[1]);} return _false_nv_;}); on_cancel_mH_ (res_vw_,function(param_vC_){return reader_vu_.abort();}); if(typeof _vr_==="number") if(-550809787===_vr_) reader_vu_.readAsDataURL(value_vk_); else if(936573133<=_vr_) reader_vu_.readAsText(value_vk_); else reader_vu_.readAsBinaryString(value_vk_); else reader_vu_.readAsText(value_vk_,_vr_[2]); var _vD_=res_vw_;} else {var fail_vF_=function(param_vE_){return _j_(_bl_);}; if(typeof _vr_==="number") var _vG_= -550809787===_vr_ ?_nr_(value_vk_.getAsDataURL) ?value_vk_.getAsDataURL() :fail_vF_(0) :936573133<=_vr_ ?_nr_(value_vk_.getAsText) ?value_vk_.getAsText(_bk_.toString()) :fail_vF_(0) :_nr_(value_vk_.getAsBinary) ?value_vk_.getAsBinary() :fail_vF_(0); else {var e_vH_=_vr_[2], _vG_= _nr_(value_vk_.getAsText) ?value_vk_.getAsText(e_vH_) :fail_vF_(0);} var _vD_=return_lS_(_vG_);} return _mI_(_vD_,_vs_);} var value_vJ_=_vi_[2],_vI_=_X_.toString(); b_ve_.push (_cH_(_V_,_cH_(_vj_,_W_)).toString(),value_vJ_,_vI_); return return_lS_(0);}, _vf_), _vK_), _vd_);}} else req_uE_.send(_u4_[2]);} else req_uE_.send(null_m1_); on_cancel_mH_(res_uC_,function(param_vL_){return req_uE_.abort();}); var _vN_=_mI_(_mJ_(res_uC_,_tg_),start_vM_),_vO_=_vN_;} catch(_vQ_){var _vO_=fail_mk_(_vQ_);} var t_vR_=repr_k$_(_vO_),_vS_=t_vR_[1]; switch(_vS_[0]) {case 1:_sd_(_vS_[1]);break; case 2: var sleeper_vU_=_vS_[1], res_vT_=temp_mb_(t_vR_), data_vW_=current_data_ko_[1]; add_immutable_waiter_mm_ (sleeper_vU_, function(state_vV_) {switch(state_vV_[0]) {case 0:return fast_connect_lR_(res_vT_,state_vV_); case 1: var exn_vX_=state_vV_[1]; current_data_ko_[1]=data_vW_; try {var _vY_=_sd_(exn_vX_),_vZ_=_vY_;} catch(_v0_){var _vZ_=fail_mk_(_v0_);} return connect_lQ_(res_vT_,_vZ_); default:throw [0,_d_,_by_];}}); break; case 3:throw [0,_d_,_bx_]; default:} return _true_nu_;}); do_at_exit_cZ_(0); return;} ());